@kurrawongai/codemirror-lang-turtle12 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # @kurrawongai/codemirror-lang-turtle12
2
2
 
3
- RDF 1.2 Turtle, TriG, N-Triples, and N-Quads support for CodeMirror 6.
3
+ RDF 1.2 Turtle, TriG, N-Triples, and N-Quads support for CodeMirror 6, and
4
+ [RDF Patch](https://afs.github.io/rdf-delta/rdf-patch.html) with N-Quads terms.
4
5
 
5
6
  The RDF 1.2 specifications targeted by this package are W3C Working Drafts,
6
7
  not final Recommendations. Their syntax may change; see the project's
@@ -25,9 +26,11 @@ new EditorView({
25
26
  });
26
27
  ```
27
28
 
28
- Use `trig()`, `ntriples()`, or `nquads()` from the same package for those
29
- formats. Turtle and TriG include prefix completion; N-Triples and N-Quads do
30
- not include a completion source.
29
+ Use `trig()`, `ntriples()`, `nquads()`, or `rdfPatch()` from the same package
30
+ for those formats. Turtle and TriG include prefix completion; N-Triples,
31
+ N-Quads and RDF Patch do not include a completion source. In RDF Patch, tokens
32
+ in `A` and `PA` rows carry the `inserted` highlight tag, and tokens in `D` and
33
+ `PD` rows carry `deleted`.
31
34
 
32
35
  The parser supports editing incomplete documents, and the editor underlines
33
36
  parse errors. Use a separate validator to check document validity.
@@ -35,7 +38,7 @@ parse errors. Use a separate validator to check document validity.
35
38
  ## Documentation
36
39
 
37
40
  - [Usage and completion](https://github.com/kurrawong/codemirror-lang-rdf/blob/main/docs/usage.md)
38
- - [API reference](https://github.com/kurrawong/codemirror-lang-rdf/blob/main/docs/api.md#turtle-trig-n-triples-and-n-quads)
41
+ - [API reference](https://github.com/kurrawong/codemirror-lang-rdf/blob/main/docs/api.md#turtle-trig-n-triples-n-quads-and-rdf-patch)
39
42
  - [Highlight tags](https://github.com/kurrawong/codemirror-lang-rdf/blob/main/docs/highlight-tags.md)
40
43
  - [Conformance and corpus revision](https://github.com/kurrawong/codemirror-lang-rdf/blob/main/docs/conformance.md)
41
44
 
package/dist/index.cjs CHANGED
@@ -6,23 +6,25 @@ var highlight = require('@lezer/highlight');
6
6
  var lint = require('@codemirror/lint');
7
7
 
8
8
  // This file was generated by lezer-generator. You probably shouldn't edit it.
9
+ const spec_patchWord = {__proto__:null,H:248, TX:252, PA:256, PD:260, A:262, D:266, TC:268, TA:270};
9
10
  const parser$1 = lr.LRParser.deserialize({
10
11
  version: 14,
11
- states: "5fQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOOOQO'#Ce'#CeOOQO'#EX'#EXO!jQPO'#CaO!oQPO'#CgO!zQPO'#CiO!oQPO'#CkO#PQPO'#CmO#UQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$[QQO'#C{O$cQPO'#DOO$qQPO'#DbO$cQPO'#CqO%VQPO'#CqOOQO'#EW'#EWO%kQPO'#EWOOQO'#D{'#D{QYQPOOOOQO'#Dn'#DnO%pQPO'#DqO%}QPO'#DlO&`QPO'#DsO&qQPO'#DsO'SQPO'#DtO$cQPO'#DtOOQO'#Ea'#EaOOQO'#E`'#E`OOQO'#EQ'#EQQ!WQPOOOOQO'#Ec'#EcOOQO'#ER'#ERQ!bQPOOO!oQPO'#DvOOQO'#ES'#ESQ!bQPOOO!oQPO'#DyO!oQPO,58{O'eQPO,59RO!oQPO,59TOOQO,59V,59VOOQO,59X,59XO'jQPO,59XOOQO'#D|'#D|O'oQQO,59gOOQO,59g,59gO([QQO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#EZ'#EZO%}QPO'#D_OOQO'#EY'#EYOOQO'#Cs'#CsO)hQPO,59jO#ZQQO'#CrOOQO'#E^'#E^O$cQPO,59|OOQO,59],59]OOQO,5:r,5:rOOQO-E7y-E7yO)mQPO'#DrOOQO,5:],5:]O)uQPO,5:]O&lQPO,5:WOOQO,5:_,5:_O)zQPO,5:_OOQO,5:`,5:`O*PQPO,5:`OOQO-E8O-E8OOOQO-E8P-E8PO*UQQO,5:bOOQO-E8Q-E8QO*UQQO,5:eO*dQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E7z-E7zOOQO1G/R1G/RO!oQPO'#DSOOQO,59k,59kOOQO'#E['#E[O$cQPO,59yOOQO1G/U1G/UO*iQQO'#CuO*}QPO,59^O+YQQO1G/hO+sQSO'#DPO+}QSO'#CuO,cQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO,pQPO'#DPOOQO'#Eb'#EbO!bQPO'#DwO-[QPO1G/|O-aQPO1G0POOQO7+$R7+$ROOQO,59n,59nO-lQQO1G/eO.VQQO'#DcO$cQPO'#DhOOQO'#D}'#D}O.mQQO'#DeO#ZQQO'#EOO/RQPO,59aO/RQPO,59aO/rQPO'#EPO/|QPO1G.xOOQO'#E_'#E_O0XQPO7+%SO0aQSO'#DcO0wQSO'#DeOOQO1G/x1G/xO1]QPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO1bQPO7+%kOOQO'#E]'#E]O1gQPO7+%POOQO,59},59}O1lQPO,5:SOOQO-E7{-E7{O1qQQO,5:jOOQO-E7|-E7|O2VQPO1G.{O#ZQQO,5:kOOQO-E7}-E7}O2eQPO'#DcOOQO<<Hn<<HnO2lQPO<<HnO2qQSO,5:jO*UQQO1G/}OOQO<<IV<<IVOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0U1G0UOOQO1G0V1G0VOOQOAN>YAN>YO3VQPO7+%iOOQO<<IT<<ITO3[QQO'#CrO3[QQO'#EOO3{QPO,59aO3{QPO,59aO4ZQPO1G.{O3[QQO,5:kO4iQPO'#EPO4sQPO1G.xO5OQPO,59^",
12
- stateData: "5m~O!yOSPOS~OUUOVSOWTOYSO[VO^WO`XObYOdZOk]Ol]On^Oq_O!T`O~O!aiO!dhO~PYOWrOkrO~OVyO~OVSOWTOYSO~OV{O~Oc}O~Oc!OO~OVSOWTOYSOk]Ol]On^Oq_Ot!SOy!TOz!TO{!TO}!UO!O!UO!Q!WO!T`O~Om!RO~P#ZOVSOWTOYSOh!YO~OVSOWTOYSOk]Ol]O!T`O~OVSOWTOYSOh!YOSeX!ceX~OS!`O~On^Oq_O!c!cO~P$qOVSOWTOYSOk]Ol]O~OVSOWTOYSOh!YO!dhO~OS!fOVSOWTOYSOh!YO~OS!hOVSOWTOYSOh!YO~OS!pO~OS!rO~Om!tO~P#ZOu!vOw!uO!WsX!ZsX!]sX!^sX~OVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsXpsX!YsX~P'vOp!yO~OS#PO!c!fX~O!c#QO~OS#SO~OS#TO~OW#VOk#VOt#UO!Q#WO~OS#ZO~O!W#^O!Z#_O!]#bOpiX!^iX!YiX~O!^#eOpfa!Yfa~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qOSsX!csX~P'vO!W#iO!Z#_O!]$ZOSiX!^iX!ciX~On^Oq_O!c!fa~P$qOu!vOw!uOSsXWsXksX!SsX!WsX!PsX~OS#mO~OS#oOW#nOk#nO~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P%}Op!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P%}O!W#^O!Z#_Op!XX!]!XX!^!XX!Y!XX~O!]#bOpia!^ia!Yia~OVSOWTOYSOh!YO!^!sX~Op!sX!Y!sX~P/aO!^#eOpfi!Yfi~O!S#|O!W#{O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P%}O!W#iO!Z#_OS!XX!]!XX!^!XX!c!XX~OW$PO~OS$QO~O!P$RO~O!Y$SO~O!W#^O!Z#_Op!ra!]!ra!^!ra!Y!ra~O!]#bOpii!^ii!Yii~O!S!VX~P%}O!S$VO~O!W#iO!Z#_OS!ra!]!ra!^!ra!c!ra~O!P$XO~On^Oq_Ot!}Oy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qO!]$ZOSia!^ia!cia~O!]$ZOSii!^ii!cii~OS!sX!c!sX~P/aO!^$`OSfi!cfi~O!^$`OSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~",
13
- goto: ".z#WPPP#XP#aPPP#gP#aP#aP#aP#aPPP$d$l%OP%h%rPPPP&jPP'O'dPP'uP'zPPP'zPPPP(WPP(h)SP)_PP)iPPP)qP)uPP)|*W)q)qP*^'pP*b*f*i*o*u+R+e+o+u+{PPP,R,V-r(W.U.X.[._.b#].f.oScOfToPqX[OPfq!uTOPVX^_`abfhijklmquxy{!Q!W![!^!u!x!|#P#]#^#_#b#e#i#y#{$Y$Z$_$`SdOfT!bh#PQ!Z_S!_abS!gjkS!ilmR#t#_S![_#_Q!|!^Q#]!xQ#y#e[$YabjklmR$_$`Q!{![S$U#y$_R$b$YWaOfh#PUgPiq`!X^!Q![#b#y$Y$Z$_Q!]`Q!w!WQ#g!|Q#q#]V#s#^#i#{WaOfh#PSmPqa!X^!Q![#b#y$Y$Z$_WbOfh#PSlPqa!X^!Q![#b#y$Y$Z$_d!V^!Q![!|#]#b#y$Y$Z$_V#V!l!n$PV!v!S!}#Ue!V^!Q![!|#]#b#y$Y$Z$_`!X^!Q![#b#y$Y$Z$_Q#g!|R#q#]WbOfh#PSkPq`!X^!Q![#b#y$Y$Z$_Q!]`R#g!|[#`!z#O#a#j#v$OR#}#hQ#d!zS$T#v$OR$]#O]#`!z#O#a#j#v$OTnPqSjPqR!eiSnPqQ!fjR#R!eQ!dhR#k#PTsQtTvRwR#p#YQfOR!afQ!Q^R!s!QS#a!z#vS#j#O$OT#u#a#jQ#c!zW#w#c#x$[$^Q#x#dQ$[#OR$^$]Q#f!{S#z#f$aR$a$bQqPR!jqQtQR!ktQwRR!mwTeOfWaOfh#PUgPiqQzVQ|X`!X^!Q![#b#y$Y$Z$_h!Y_abjklm!^!x#_#e$`Q!]`Q!luQ!nxQ!oyQ!q{Q!w!WQ#[!uQ#g!|Q#q#]V#s#^#i#{S!P^!QS!z![#yS#O$Y$_Q#v#bR$O$ZR!x!WR#r#]R!^`R#h!|TpPqQ#X!lQ#Y!nR$W$PSuQtSxRwR#l#W",
14
- nodeNames: "⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel",
15
- maxTerm: 99,
12
+ states: "<UQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOQ!jQQOOOOQO'#Ce'#CeOOQO'#Eo'#EoO#OQPO'#CaO#TQPO'#CgO#`QPO'#CiO#TQPO'#CkO#eQPO'#CmO#jQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$pQSO'#C{O$wQPO'#DOO%VQPO'#DbO$wQPO'#CqO%kQPO'#CqOOQO'#En'#EnO&PQPO'#EnOOQO'#Ea'#EaQYQPOOOOQO'#Dn'#DnO&UQPO'#DqO&cQPO'#DlO&tQPO'#DsO'VQPO'#DsO'hQPO'#DtO$wQPO'#DtOOQO'#Ew'#EwOOQO'#Ev'#EvOOQO'#Ef'#EfQ!WQPOOOOQO'#Ey'#EyOOQO'#Eg'#EgQ!bQPOOO#TQPO'#DvOOQO'#Eh'#EhQ!bQPOOO#TQPO'#DyOOQO'#D}'#D}O'yQQO'#D|OOQO'#ER'#ERO(OQPO'#EQOOQO'#ET'#ETO(TQQO'#ESOOQO'#EW'#EWO(TQQO'#EVOOQO'#EY'#EYO!bQPO'#EXOOQO'#E['#E[O!bQPO'#EZOOQO'#FP'#FPO(]QQO'#EPOOQO'#Ez'#EzOOQO'#Ei'#EiQ!jQQOOO#TQPO,58{O(qQPO,59RO#TQPO,59TOOQO,59V,59VOOQO,59X,59XO(vQPO,59XOOQO'#Eb'#EbO({QSO,59gOOQO,59g,59gO)SQSO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#Eq'#EqO&cQPO'#D_OOQO'#Ep'#EpOOQO'#Cs'#CsO*^QPO,59jO*cQSO'#CrOOQO'#Et'#EtO$wQPO,59|OOQO,59],59]OOQO,5;Y,5;YOOQO-E8_-E8_O+SQPO'#DrOOQO,5:],5:]O+[QPO,5:]O'QQPO,5:WOOQO,5:_,5:_O+aQPO,5:_OOQO,5:`,5:`O+fQPO,5:`OOQO-E8d-E8dOOQO-E8e-E8eO+kQQO,5:bOOQO-E8f-E8fO+kQQO,5:eOOQO'#EO'#EOO+yQQO,5:hOOQO,5:l,5:lOOQO'#EU'#EUOOQO'#FR'#FRO,UQPO,5:nO,ZQPO,5:qO,`QPO,5:sO,eQPO'#FUO,jQPO,5:uOOQO'#Ej'#EjO(]QQO,5:kOOQO'#E^'#E^O,oQPO'#E]OOQO'#E`'#E`O,tQPO'#E_OOQO,5:k,5:kOOQO-E8g-E8gO,yQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E8`-E8`OOQO1G/R1G/RO#TQPO'#DSOOQO,59k,59kOOQO'#Er'#ErO$wQPO,59yOOQO1G/U1G/UO-OQQO'#DPO-pQQO'#CuO.UQPO,59^O.aQSO1G/hO.zQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO/XQPO'#DPOOQO'#Ex'#ExO!bQPO'#DwO/sQPO1G/|O/xQPO1G0POOQO'#E}'#E}O0TQPO1G0SO0YQPO1G0YOOQO1G0]1G0]OOQO1G0_1G0_O+kQQO,5;pOOQO1G0a1G0aOOQO-E8h-E8hOOQO1G0V1G0VOOQO,5:w,5:wOOQO,5:y,5:yOOQO7+$R7+$ROOQO,59n,59nO0_QSO1G/eO0xQSO'#DcO$wQPO'#DhOOQO'#Ec'#EcO1`QQO'#DeO*cQSO'#EdO1tQPO,59aO1tQPO,59aO2eQPO'#EeO2oQPO1G.xOOQO'#Eu'#EuO2zQPO7+%SO3SQWO'#DcOOQO1G/x1G/xO3jQPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO3oQPO7+%kOOQO7+%n7+%nOOQO7+%t7+%tO3tQPO1G1[OOQO'#Es'#EsO4PQPO7+%POOQO,59},59}O4UQPO,5:SOOQO-E8a-E8aO4ZQQO,5;OOOQO-E8b-E8bO4oQPO1G.{O*cQSO,5;POOQO-E8c-E8cO4}QPO'#DcOOQO<<Hn<<HnO5UQPO<<HnO+kQQO1G/}OOQO<<IV<<IVOOQO7+&v7+&vOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0j1G0jOOQO1G0k1G0kOOQOAN>YAN>YO5ZQPO7+%iOOQO<<IT<<ITO5`QQO'#CuO5tQQO'#DeO6YQQO,5;OO*cQSO,5;PO*cQSO'#CrO*cQSO'#EdO6nQPO,59aO6nQPO,59aO6|QPO'#EeO7WQPO1G.xO7cQPO1G.{O7qQPO,59^",
13
+ stateData: "8`~O#aOSPOS~OUVOVTOWUOYTO[WO^XO`YObZOd[Ok^Ol^On_Oq`O!TaO~O!ajO!diO~PYOWsOksO~O#pzO#r|O#t!OO#v!QO#w!SO#y!UO~OV!]O~OVTOWUOYTO~OV!_O~Oc!aO~Oc!bO~OVTOWUOYTOk^Ol^On_Oq`Ot!fOy!gOz!gO{!gO}!hO!O!hO!Q!jO!TaO~Om!eO~P#oOVTOWUOYTOh!lO~OVTOWUOYTOk^Ol^O!TaO~OVTOWUOYTOh!lOSeX!ceX~OS!rO~On_Oq`O!c!uO~P%VOVTOWUOYTOk^Ol^O~OVTOWUOYTOh!lO!diO~OS!xOVTOWUOYTOh!lO~OS!zOVTOWUOYTOh!lO~O#o#RO~OS#TO~Ot#VO#o#UO~O#t!OO#v!QO#w!SO#y!UO#z#_O#{#aO~OS#fO~OS#hO~Om#jO~P#oOu#lOw#kOVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsX~Op#oO~On_Oq`Ot#pOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOS#tO!c!fX~O!c#uO~OS#wO~OS#xO~OW#zOk#zOt#yO!Q#{O~OW$OOk$OOt#yO~OW$QO~OS$RO~OS$SO~OW$TO~OS$UO~OS$XO~OS$YO~OS$ZO~Ou#lOw#kOpsX!WsX!ZsX!]sX!^sXSsX!csX!YsX~O!W$^O!Z$_O!]$bOpiX!^iX!YiX~O!^$eOpfa!Yfa~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOn_Oq`O!c!fa~P%VOu#lOw#kOSsXWsXksX!SsX!WsX!PsX~OS$lO~OS$nOW$mOk$mO~OS$pO~OS$qO~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P&cOp!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P&cO!W$^O!Z$_Op!XX!]!XX!^!XX!Y!XX~O!]$bOpia!^ia!Yia~OVTOWUOYTOh!lO!^#XX~Op#XX!Y#XX~P2SO!^$eOpfi!Yfi~O!S%OO!W$}O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P&cOW%QO~OS%RO~OW$mOk$mOS#xi~O!P%TO~O!Y%UO~O!W$^O!Z$_Op#Wa!]#Wa!^#Wa!Y#Wa~O!]$bOpii!^ii!Yii~O!S!VX~P&cO!S%XO~O!P%ZO~O!W$iO!Z$_O!]%aOSiX!^iX!ciX~O!W$iO!Z$_OS!XX!]!XX!^!XX!c!XX~O!W$iO!Z$_OS#Wa!]#Wa!^#Wa!c#Wa~O!]%aOSia!^ia!cia~OS#XX!c#XX~P2SO!^%dOSfi!cfi~O!]%aOSii!^ii!cii~O!^%dOSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~",
14
+ goto: "2a#yPPP#zP$SPPP$YP$SP$SP$SP$SPPP%V%_%qP&Z&ePPPP']PP'q(VPP(lP(qPPP(qPPPP(}PP)_)yP*UPP*`PPP*hP*lPP*s*}*h*hP+T+XP+_+cP+i+m+q+i+t+x+|,S,Y+|,^+|,d+|,j,p,v,p,z-O-U-[-h-z.U.[.b.h.nPPP.t.x0e(}0w0z0}1Q1T$O1X1e1tPP1xP1{P2TPP2ZSdOgTpPrX]OPgr!uUOPWY_`abcgijklmnrvy!]!_!d!j!n!p#k#n#s#t$]$^$_$b$e$i${$}%_%`%a%dSeOgT!ti#tQ!m`S!qbcS!yklS!{mnR$v$_S!n`$_Q#s!pQ$]#nQ${$eQ%_%d]%`bcklmnQ#r!nS%W${%_R%g%`WbOgi#tUhPjr`!k_!d!n$b${%_%`%aQ!oaQ#m!jQ$g#sQ$s$]V$u$^$i$}WbOgi#tSnPra!k_!d!n$b${%_%`%aWcOgi#tSmPra!k_!d!n$b${%_%`%ad!i_!d!n#s$]$b${%_%`%aW#z#O#Q$T%QR$O#SV#l!f#p#ye!i_!d!n#s$]$b${%_%`%a`!k_!d!n$b${%_%`%aQ$g#sR$s$]WcOgi#tSlPr`!k_!d!n$b${%_%`%aQ!oaR$g#s[$`#q$a$x%[%]%^R%P$hQ$d#qS%V$x%^R%c%[]$`#q$a$x%[%]%^ToPrSkPrR!wjSoPrQ!xkR#v!wQ!viR$j#tTtQuX#z#O#Q$T%QTwRxQ$o#}R%S$rT!YS![T{S![R#S{T!XS![T}S![X!WS!X![#^X!PS!X![#^T#V!P!RX!RS!X![#^X!TS!X![#^X!VS!X![#^Q#c!XR$W#^T#`!X#^T#b!X#^QgOR!sgQ!d_R#i!dS$a#q$xS$w$a%]T%]%[%^Q$c#qW$y$c$z%b%fQ$z$dQ%b%[R%f%cQ$f#rS$|$f%eR%e%gQrPR!|rQuQR!}uQxRR#PxQ![SR#d![Q#^!XR$V#^TfOgWbOgi#tUhPjrQ!^WQ!`Y`!k_!d!n$b${%_%`%ah!l`bcklmn!p#n$_$e%dQ!oaQ#OvQ#QyQ#e!]Q#g!_Q#m!jQ$[#kQ$g#sQ$s$]V$u$^$i$}S!c_!dS#q!n${Q$x$bS%[%_%`R%^%aR#n!jR$t$]R!paR$h#sTqPrQ#|#OQ#}#QQ$r$TR%Y%QSvQuSyRxS#Z!T!VR$k#{T!ZS![R$P#SS!YS![T#]!X#^Q#W!PR#X!RQ#Y!TR#[!V",
15
+ nodeNames: "⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel RdfPatchDoc Header KwH HeaderKey Transaction TxBegin KwTX PrefixAdd KwPA PatchPrefix PrefixDelete KwPD QuadAdd KwA QuadDelete KwD TxCommit KwTC TxAbort KwTA",
16
+ maxTerm: 135,
16
17
  nodeProps: [
17
18
  ["openedBy", 29,"(",32,"[",47,"<<(",50,"<<",56,"{|",65,"{"],
18
19
  ["closedBy", 30,")",33,"]",48,")>>",51,">>",57,"|}",66,"}"]
19
20
  ],
20
21
  skippedNodes: [0,1],
21
- repeatNodeCount: 8,
22
- tokenData: "#-Z~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! s!e!iL|!i!j!(X!j!rL|!r!s!0_!s!xL|!x!y!:]!y!}L|!}#O!E{#P#Q!Fx#Q#R!F}#R#S!GY#T#U!KW#U#V! s#V#YL|#Y#Z!Ln#Z#[!(X#[#dL|#d#e!0_#e#hL|#h#i#&_#i#jL|#j#k!:]#k#oL|#o#p#,g#p#q#,t#q#r#-P#r#s#-U%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS!y~XY$zYZ$z]^$zpq$zR%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&rOtQcPR&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gR'hR!Q!['q!c!i'q#T#Z'qR'tR!Q!['}!c!i'}#T#Z'}R(QR!Q![(Z!c!i(Z#T#Z(ZR(^R!Q![(g!c!i(g#T#Z(gR(jR!Q![(s!c!i(s#T#Z(sR(vR!Q![)P!c!i)P#T#Z)PR)SR!Q![)]!c!i)]#T#Z)]R)`R!Q![%{!c!i%{#T#Z%{R)lP;=`<%l%{R)vPtQcPrs)yQ)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yQ*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yQ*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yQ+^OtQQ+aP;=`<%l)yQ+gRO;'S)y;'S;=`+p;=`O)yQ+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]R,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zR.{R!Q![/U!c!i/U#T#Z/UR/XR!Q![/b!c!i/b#T#Z/bR/eR!Q![/n!c!i/n#T#Z/nR/qR!Q![/z!c!i/z#T#Z/zR/}R!Q![0W!c!i0W#T#Z0WR0ZR!Q![0d!c!i0d#T#Z0dR0gR!Q![0p!c!i0p#T#Z0pR0sR!Q![-g!c!i-g#T#Z-gR1PP;=`<%l-gR1ZPtQcPwx1^Q1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^Q1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^Q2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^Q2oP;=`<%l1^Q2uRO;'S1^;'S;=`3O;=`O1^Q3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~R3uPmQ!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^Q4aP!Q![4dQ4iRzQ!Q![4d!g!h4r#X#Y4rQ4uR{|5O}!O5O!Q![5UQ5RP!Q![5UQ5ZP{Q!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rQ5rR!Q![4d!g!h4r#X#Y4r~6QO!]~V6VPST!Q![4d~6_bV~uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~7jR!Q![7s!c!i7s#T#Z7s~7vR!Q![8P!c!i8P#T#Z8P~8UgY~uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~;[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq~MPe}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~Ned}!OL|!O!PNb!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~! vg}!OL|!O!PNb!Q![L|![!]6Y!c!d!#_!d!}L|#R#SL|#T#U!#_#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!#bi}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!%P!v!}L|#R#SL|#T#gL|#g#h!%P#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!%Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!&q!h!}L|#R#SL|#T#XL|#X#Y!&q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!&ve`~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!([i}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!)y!u!}L|#R#SL|#T#fL|#f#g!)y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!)|g}!OL|!O!PNb!Q![L|![!]6Y!c!d!+e!d!}L|#R#SL|#T#U!+e#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!+hi}!OL|!O!PNb!Q![L|![!]6Y!c!rL|!r!s!-V!s!}L|#R#SL|#T#dL|#d#e!-V#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!-Yi}!OL|!O!PNb!Q![L|![!]6Y!c!jL|!j!k!.w!k!}L|#R#SL|#T#[L|#[#]!.w#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!.|e!a~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!0bi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!2P!u!}L|#R#SL|#T#fL|#f#g!2P#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!2Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!3q!h!}L|#R#SL|#T#XL|#X#Y!3q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!3ti}!OL|!O!PNb!Q![L|![!]6Y!c!hL|!h!i!5c!i!}L|#R#SL|#T#YL|#Y#Z!5c#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!5fi}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!7T!l!}L|#R#SL|#T#]L|#]#^!7T#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!7Wi}!OL|!O!PNb!Q![L|![!]6Y!c!zL|!z!{!8u!{!}L|#R#SL|#T#lL|#l#m!8u#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!8ze^~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!:`i}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!;}!h!}L|#R#SL|#T#XL|#X#Y!;}#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!<Qi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!=o!u!}L|#R#SL|#T#fL|#f#g!=o#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!=ri}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!?a!v!}L|#R#SL|#T#gL|#g#h!?a#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!?di}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!AR!l!}L|#R#SL|#T#]L|#]#^!AR#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!AUi}!OL|!O!PNb!Q![L|![!]6Y!c!qL|!q!r!Bs!r!}L|#R#SL|#T#cL|#c#d!Bs#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Bvi}!OL|!O!PNb!Q![L|![!]6Y!c!pL|!p!q!De!q!}L|#R#SL|#T#bL|#b#c!De#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Djeb~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!FQTq~XY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FdTXY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FxOl~~!F}Op~~!GQP#Q#R!GT~!GYOw~~!G]P![!]!G`~!Gc_!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb%W%o!Hb%p&a!Hb&b1p!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Hgdk~}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Ixd}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!K]eh~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Lqf}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#U!NV#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!NYg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a# q#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~# tg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h##]#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~##`g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#$w#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#$|e!O~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#&bg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#'y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#'|g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#)e#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#)hg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#+P#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#+Ue}~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|V#,lP!dP#p#q#,oU#,tO!ZU~#,wP#q#r#,z~#-PO!Y~~#-UO!c~~#-ZO!W~",
23
- tokenizers: [0, 1, 2],
24
- topRules: {"TurtleDoc":[0,2],"TrigDoc":[1,61],"NTriplesDoc":[2,71],"NQuadsDoc":[3,74]},
25
- tokenPrec: 931
22
+ repeatNodeCount: 10,
23
+ tokenData: "#.o~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! u!e!iL|!i!j!(c!j!rL|!r!s!0s!s!xL|!x!y!:}!y!}L|!}#O!F{#P#Q!Gx#Q#R!G}#R#S!HY#T#U!LW#U#V! u#V#YL|#Y#Z!Mp#Z#[!(c#[#dL|#d#e!0s#e#hL|#h#i#'k#i#jL|#j#k!:}#k#oL|#o#p#-{#p#q#.Y#q#r#.e#r#s#.j%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS#a~XY$zYZ$z]^$zpq$zV%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&rOtUcPV&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gV'hR!Q!['q!c!i'q#T#Z'qV'tR!Q!['}!c!i'}#T#Z'}V(QR!Q![(Z!c!i(Z#T#Z(ZV(^R!Q![(g!c!i(g#T#Z(gV(jR!Q![(s!c!i(s#T#Z(sV(vR!Q![)P!c!i)P#T#Z)PV)SR!Q![)]!c!i)]#T#Z)]V)`R!Q![%{!c!i%{#T#Z%{V)lP;=`<%l%{V)vPtUcPrs)yU)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yU*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yU*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yU+^OtUU+aP;=`<%l)yU+gRO;'S)y;'S;=`+p;=`O)yU+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]V,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zV.{R!Q![/U!c!i/U#T#Z/UV/XR!Q![/b!c!i/b#T#Z/bV/eR!Q![/n!c!i/n#T#Z/nV/qR!Q![/z!c!i/z#T#Z/zV/}R!Q![0W!c!i0W#T#Z0WV0ZR!Q![0d!c!i0d#T#Z0dV0gR!Q![0p!c!i0p#T#Z0pV0sR!Q![-g!c!i-g#T#Z-gV1PP;=`<%l-gV1ZPtUcPwx1^U1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^U1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^U2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^U2oP;=`<%l1^U2uRO;'S1^;'S;=`3O;=`O1^U3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~T3uPmS!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^S4aP!Q![4dS4iRzS!Q![4d!g!h4r#X#Y4rS4uR{|5O}!O5O!Q![5US5RP!Q![5US5ZP{S!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rS5rR!Q![4d!g!h4r#X#Y4r~6QO!]~_6VPSZ!Q![4d]6_bV]uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]7jR!Q![7s!c!i7s#T#Z7s]7vR!Q![8P!c!i8P#T#Z8P]8UgY]uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P];[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq_MRe#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_Ngd}!OL|!O!PNd!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_! zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!#c!d!}L|#R#SL|#T#U!#c#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!#hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!%V!v!}L|#R#SL|#T#gL|#g#h!%V#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!%[i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!&y!h!}L|#R#SL|#T#XL|#X#Y!&y#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!'Qe#oQ`P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!(hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!*V!u!}L|#R#SL|#T#fL|#f#g!*V#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!*[g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!+s!d!}L|#R#SL|#T#U!+s#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!+xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!rL|!r!s!-g!s!}L|#R#SL|#T#dL|#d#e!-g#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!-li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!jL|!j!k!/Z!k!}L|#R#SL|#T#[L|#[#]!/Z#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!/be#oQ!aP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!0xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!2g!u!}L|#R#SL|#T#fL|#f#g!2g#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!2li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!4Z!h!}L|#R#SL|#T#XL|#X#Y!4Z#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!4`i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!hL|!h!i!5}!i!}L|#R#SL|#T#YL|#Y#Z!5}#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!6Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!7q!l!}L|#R#SL|#T#]L|#]#^!7q#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!7vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!zL|!z!{!9e!{!}L|#R#SL|#T#lL|#l#m!9e#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!9le#oQ^P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!;Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!<q!h!}L|#R#SL|#T#XL|#X#Y!<q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!<vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!>e!u!}L|#R#SL|#T#fL|#f#g!>e#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!>ji#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!@X!v!}L|#R#SL|#T#gL|#g#h!@X#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!@^i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!A{!l!}L|#R#SL|#T#]L|#]#^!A{#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!BQi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!qL|!q!r!Co!r!}L|#R#SL|#T#cL|#c#d!Co#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Cti#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!pL|!p!q!Ec!q!}L|#R#SL|#T#bL|#b#c!Ec#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Eje#oQbP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!GQTq~XY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GdTXY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GxOl~~!G}Op~~!HQP#Q#R!HT~!HYOw~~!H]P![!]!H`~!Hc_!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib%W%o!Ib%p&a!Ib&b1p!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Igdk~}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Jxd}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib_!L_e#oQhP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Muf#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#U# Z#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_# `g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a#!w#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#!|g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h#$e#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#$jg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#&R#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#&Ye#oQ!OS}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#'pg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#)X#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#)^g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#*u#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#*zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#,c#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#,je#oQ}S}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#.QP!dP#p#q#.T^#.YO!Z^~#.]P#q#r#.`~#.eO!Y~~#.jO!c~~#.oO!W~",
24
+ tokenizers: [0, 1, 2, 3],
25
+ topRules: {"TurtleDoc":[0,2],"TrigDoc":[1,61],"NTriplesDoc":[2,71],"NQuadsDoc":[3,74],"RdfPatchDoc":[4,77]},
26
+ specialized: [{term: 123, get: (value) => spec_patchWord[value] || -1}],
27
+ tokenPrec: 1056
26
28
  });
27
29
 
28
30
  const turtleHighlighting = highlight.styleTags({
@@ -70,6 +72,17 @@ const turtleHighlighting = highlight.styleTags({
70
72
  // The reifier marker only ever introduces a reifier, so it is worth telling
71
73
  // from arithmetic; it falls back to `operator`.
72
74
  '"~"': highlight.tags.special(highlight.tags.operator),
75
+ /*
76
+ * RDF Patch. The op codes are keywords. Every token of an `A` or `PA` row also
77
+ * carries `inserted`, and every token of a `D` or `PD` row carries `deleted`,
78
+ * in the same way as `quote` above: a style can colour a patch as a diff, and
79
+ * a style without those tags sees no change.
80
+ */
81
+ "KwH KwTX KwTC KwTA KwPA KwPD KwA KwD": highlight.tags.keyword,
82
+ HeaderKey: highlight.tags.attributeName,
83
+ PatchPrefix: highlight.tags.namespace,
84
+ "QuadAdd/... PrefixAdd/...": highlight.tags.inserted,
85
+ "QuadDelete/... PrefixDelete/...": highlight.tags.deleted,
73
86
  '";" ","': highlight.tags.separator,
74
87
  '"."': highlight.tags.punctuation
75
88
  });
@@ -193,6 +206,14 @@ const statementFold = (node, state) => {
193
206
  }
194
207
  return { from: firstLineEnd, to: node.to };
195
208
  };
209
+ const transactionFold = (node, state) => {
210
+ const begin = node.getChild("TxBegin");
211
+ const end = node.getChild("TxCommit") ?? node.getChild("TxAbort");
212
+ if (!begin || !end) return null;
213
+ const from = state.doc.lineAt(begin.to).to;
214
+ const to = state.doc.lineAt(end.from).from - 1;
215
+ return to > from ? { from, to } : null;
216
+ };
196
217
  const turtleProps = [
197
218
  turtleHighlighting,
198
219
  language.indentNodeProp.add({
@@ -204,6 +225,7 @@ const turtleProps = [
204
225
  ReifiedTriple: language.delimitedIndent({ closing: ">>" })
205
226
  }),
206
227
  language.foldNodeProp.add({
228
+ Transaction: transactionFold,
207
229
  BlankNodePropertyList: language.foldInside,
208
230
  Collection: language.foldInside,
209
231
  WrappedGraph: language.foldInside,
@@ -216,9 +238,16 @@ const languageData = {
216
238
  closeBrackets: { brackets: ["[", "(", "<", '"', "'"] },
217
239
  indentOnInput: /^\s*[\]})]$/
218
240
  };
241
+ const LANGUAGE_NAMES = {
242
+ TurtleDoc: "turtle",
243
+ TrigDoc: "trig",
244
+ NTriplesDoc: "ntriples",
245
+ NQuadsDoc: "nquads",
246
+ RdfPatchDoc: "rdfpatch"
247
+ };
219
248
  function define(top) {
220
249
  return language.LRLanguage.define({
221
- name: top === "TurtleDoc" ? "turtle" : top === "TrigDoc" ? "trig" : top === "NTriplesDoc" ? "ntriples" : "nquads",
250
+ name: LANGUAGE_NAMES[top],
222
251
  parser: parser$1.configure({ top, props: turtleProps }),
223
252
  languageData
224
253
  });
@@ -227,6 +256,7 @@ const turtleLanguage = define("TurtleDoc");
227
256
  const trigLanguage = define("TrigDoc");
228
257
  const ntriplesLanguage = define("NTriplesDoc");
229
258
  const nquadsLanguage = define("NQuadsDoc");
259
+ const rdfPatchLanguage = define("RdfPatchDoc");
230
260
  function support(language$1, options, dialect) {
231
261
  return new language.LanguageSupport(language$1, [
232
262
  language$1.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),
@@ -245,6 +275,9 @@ function ntriples() {
245
275
  function nquads() {
246
276
  return new language.LanguageSupport(nquadsLanguage, parseErrorLinter());
247
277
  }
278
+ function rdfPatch() {
279
+ return new language.LanguageSupport(rdfPatchLanguage, parseErrorLinter());
280
+ }
248
281
 
249
282
  exports.documentPrefixes = documentPrefixes;
250
283
  exports.knownPrefixes = knownPrefixes;
@@ -255,6 +288,8 @@ exports.ntriplesLanguage = ntriplesLanguage;
255
288
  exports.parseErrorLinter = parseErrorLinter;
256
289
  exports.parseErrors = parseErrors;
257
290
  exports.parser = parser;
291
+ exports.rdfPatch = rdfPatch;
292
+ exports.rdfPatchLanguage = rdfPatchLanguage;
258
293
  exports.trig = trig;
259
294
  exports.trigLanguage = trigLanguage;
260
295
  exports.turtle = turtle;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/turtle.grammar","../src/highlight.ts","../src/complete.ts","../src/lint.ts","../src/index.ts"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"5fQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOOOQO'#Ce'#CeOOQO'#EX'#EXO!jQPO'#CaO!oQPO'#CgO!zQPO'#CiO!oQPO'#CkO#PQPO'#CmO#UQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$[QQO'#C{O$cQPO'#DOO$qQPO'#DbO$cQPO'#CqO%VQPO'#CqOOQO'#EW'#EWO%kQPO'#EWOOQO'#D{'#D{QYQPOOOOQO'#Dn'#DnO%pQPO'#DqO%}QPO'#DlO&`QPO'#DsO&qQPO'#DsO'SQPO'#DtO$cQPO'#DtOOQO'#Ea'#EaOOQO'#E`'#E`OOQO'#EQ'#EQQ!WQPOOOOQO'#Ec'#EcOOQO'#ER'#ERQ!bQPOOO!oQPO'#DvOOQO'#ES'#ESQ!bQPOOO!oQPO'#DyO!oQPO,58{O'eQPO,59RO!oQPO,59TOOQO,59V,59VOOQO,59X,59XO'jQPO,59XOOQO'#D|'#D|O'oQQO,59gOOQO,59g,59gO([QQO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#EZ'#EZO%}QPO'#D_OOQO'#EY'#EYOOQO'#Cs'#CsO)hQPO,59jO#ZQQO'#CrOOQO'#E^'#E^O$cQPO,59|OOQO,59],59]OOQO,5:r,5:rOOQO-E7y-E7yO)mQPO'#DrOOQO,5:],5:]O)uQPO,5:]O&lQPO,5:WOOQO,5:_,5:_O)zQPO,5:_OOQO,5:`,5:`O*PQPO,5:`OOQO-E8O-E8OOOQO-E8P-E8PO*UQQO,5:bOOQO-E8Q-E8QO*UQQO,5:eO*dQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E7z-E7zOOQO1G/R1G/RO!oQPO'#DSOOQO,59k,59kOOQO'#E['#E[O$cQPO,59yOOQO1G/U1G/UO*iQQO'#CuO*}QPO,59^O+YQQO1G/hO+sQSO'#DPO+}QSO'#CuO,cQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO,pQPO'#DPOOQO'#Eb'#EbO!bQPO'#DwO-[QPO1G/|O-aQPO1G0POOQO7+$R7+$ROOQO,59n,59nO-lQQO1G/eO.VQQO'#DcO$cQPO'#DhOOQO'#D}'#D}O.mQQO'#DeO#ZQQO'#EOO/RQPO,59aO/RQPO,59aO/rQPO'#EPO/|QPO1G.xOOQO'#E_'#E_O0XQPO7+%SO0aQSO'#DcO0wQSO'#DeOOQO1G/x1G/xO1]QPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO1bQPO7+%kOOQO'#E]'#E]O1gQPO7+%POOQO,59},59}O1lQPO,5:SOOQO-E7{-E7{O1qQQO,5:jOOQO-E7|-E7|O2VQPO1G.{O#ZQQO,5:kOOQO-E7}-E7}O2eQPO'#DcOOQO<<Hn<<HnO2lQPO<<HnO2qQSO,5:jO*UQQO1G/}OOQO<<IV<<IVOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0U1G0UOOQO1G0V1G0VOOQOAN>YAN>YO3VQPO7+%iOOQO<<IT<<ITO3[QQO'#CrO3[QQO'#EOO3{QPO,59aO3{QPO,59aO4ZQPO1G.{O3[QQO,5:kO4iQPO'#EPO4sQPO1G.xO5OQPO,59^\",\n stateData: \"5m~O!yOSPOS~OUUOVSOWTOYSO[VO^WO`XObYOdZOk]Ol]On^Oq_O!T`O~O!aiO!dhO~PYOWrOkrO~OVyO~OVSOWTOYSO~OV{O~Oc}O~Oc!OO~OVSOWTOYSOk]Ol]On^Oq_Ot!SOy!TOz!TO{!TO}!UO!O!UO!Q!WO!T`O~Om!RO~P#ZOVSOWTOYSOh!YO~OVSOWTOYSOk]Ol]O!T`O~OVSOWTOYSOh!YOSeX!ceX~OS!`O~On^Oq_O!c!cO~P$qOVSOWTOYSOk]Ol]O~OVSOWTOYSOh!YO!dhO~OS!fOVSOWTOYSOh!YO~OS!hOVSOWTOYSOh!YO~OS!pO~OS!rO~Om!tO~P#ZOu!vOw!uO!WsX!ZsX!]sX!^sX~OVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsXpsX!YsX~P'vOp!yO~OS#PO!c!fX~O!c#QO~OS#SO~OS#TO~OW#VOk#VOt#UO!Q#WO~OS#ZO~O!W#^O!Z#_O!]#bOpiX!^iX!YiX~O!^#eOpfa!Yfa~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qOSsX!csX~P'vO!W#iO!Z#_O!]$ZOSiX!^iX!ciX~On^Oq_O!c!fa~P$qOu!vOw!uOSsXWsXksX!SsX!WsX!PsX~OS#mO~OS#oOW#nOk#nO~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P%}Op!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P%}O!W#^O!Z#_Op!XX!]!XX!^!XX!Y!XX~O!]#bOpia!^ia!Yia~OVSOWTOYSOh!YO!^!sX~Op!sX!Y!sX~P/aO!^#eOpfi!Yfi~O!S#|O!W#{O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P%}O!W#iO!Z#_OS!XX!]!XX!^!XX!c!XX~OW$PO~OS$QO~O!P$RO~O!Y$SO~O!W#^O!Z#_Op!ra!]!ra!^!ra!Y!ra~O!]#bOpii!^ii!Yii~O!S!VX~P%}O!S$VO~O!W#iO!Z#_OS!ra!]!ra!^!ra!c!ra~O!P$XO~On^Oq_Ot!}Oy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qO!]$ZOSia!^ia!cia~O!]$ZOSii!^ii!cii~OS!sX!c!sX~P/aO!^$`OSfi!cfi~O!^$`OSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~\",\n goto: \".z#WPPP#XP#aPPP#gP#aP#aP#aP#aPPP$d$l%OP%h%rPPPP&jPP'O'dPP'uP'zPPP'zPPPP(WPP(h)SP)_PP)iPPP)qP)uPP)|*W)q)qP*^'pP*b*f*i*o*u+R+e+o+u+{PPP,R,V-r(W.U.X.[._.b#].f.oScOfToPqX[OPfq!uTOPVX^_`abfhijklmquxy{!Q!W![!^!u!x!|#P#]#^#_#b#e#i#y#{$Y$Z$_$`SdOfT!bh#PQ!Z_S!_abS!gjkS!ilmR#t#_S![_#_Q!|!^Q#]!xQ#y#e[$YabjklmR$_$`Q!{![S$U#y$_R$b$YWaOfh#PUgPiq`!X^!Q![#b#y$Y$Z$_Q!]`Q!w!WQ#g!|Q#q#]V#s#^#i#{WaOfh#PSmPqa!X^!Q![#b#y$Y$Z$_WbOfh#PSlPqa!X^!Q![#b#y$Y$Z$_d!V^!Q![!|#]#b#y$Y$Z$_V#V!l!n$PV!v!S!}#Ue!V^!Q![!|#]#b#y$Y$Z$_`!X^!Q![#b#y$Y$Z$_Q#g!|R#q#]WbOfh#PSkPq`!X^!Q![#b#y$Y$Z$_Q!]`R#g!|[#`!z#O#a#j#v$OR#}#hQ#d!zS$T#v$OR$]#O]#`!z#O#a#j#v$OTnPqSjPqR!eiSnPqQ!fjR#R!eQ!dhR#k#PTsQtTvRwR#p#YQfOR!afQ!Q^R!s!QS#a!z#vS#j#O$OT#u#a#jQ#c!zW#w#c#x$[$^Q#x#dQ$[#OR$^$]Q#f!{S#z#f$aR$a$bQqPR!jqQtQR!ktQwRR!mwTeOfWaOfh#PUgPiqQzVQ|X`!X^!Q![#b#y$Y$Z$_h!Y_abjklm!^!x#_#e$`Q!]`Q!luQ!nxQ!oyQ!q{Q!w!WQ#[!uQ#g!|Q#q#]V#s#^#i#{S!P^!QS!z![#yS#O$Y$_Q#v#bR$O$ZR!x!WR#r#]R!^`R#h!|TpPqQ#X!lQ#Y!nR$W$PSuQtSxRwR#l#W\",\n nodeNames: \"⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel\",\n maxTerm: 99,\n nodeProps: [\n [\"openedBy\", 29,\"(\",32,\"[\",47,\"<<(\",50,\"<<\",56,\"{|\",65,\"{\"],\n [\"closedBy\", 30,\")\",33,\"]\",48,\")>>\",51,\">>\",57,\"|}\",66,\"}\"]\n ],\n skippedNodes: [0,1],\n repeatNodeCount: 8,\n tokenData: \"#-Z~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! s!e!iL|!i!j!(X!j!rL|!r!s!0_!s!xL|!x!y!:]!y!}L|!}#O!E{#P#Q!Fx#Q#R!F}#R#S!GY#T#U!KW#U#V! s#V#YL|#Y#Z!Ln#Z#[!(X#[#dL|#d#e!0_#e#hL|#h#i#&_#i#jL|#j#k!:]#k#oL|#o#p#,g#p#q#,t#q#r#-P#r#s#-U%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS!y~XY$zYZ$z]^$zpq$zR%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&rOtQcPR&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gR'hR!Q!['q!c!i'q#T#Z'qR'tR!Q!['}!c!i'}#T#Z'}R(QR!Q![(Z!c!i(Z#T#Z(ZR(^R!Q![(g!c!i(g#T#Z(gR(jR!Q![(s!c!i(s#T#Z(sR(vR!Q![)P!c!i)P#T#Z)PR)SR!Q![)]!c!i)]#T#Z)]R)`R!Q![%{!c!i%{#T#Z%{R)lP;=`<%l%{R)vPtQcPrs)yQ)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yQ*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yQ*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yQ+^OtQQ+aP;=`<%l)yQ+gRO;'S)y;'S;=`+p;=`O)yQ+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]R,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zR.{R!Q![/U!c!i/U#T#Z/UR/XR!Q![/b!c!i/b#T#Z/bR/eR!Q![/n!c!i/n#T#Z/nR/qR!Q![/z!c!i/z#T#Z/zR/}R!Q![0W!c!i0W#T#Z0WR0ZR!Q![0d!c!i0d#T#Z0dR0gR!Q![0p!c!i0p#T#Z0pR0sR!Q![-g!c!i-g#T#Z-gR1PP;=`<%l-gR1ZPtQcPwx1^Q1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^Q1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^Q2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^Q2oP;=`<%l1^Q2uRO;'S1^;'S;=`3O;=`O1^Q3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~R3uPmQ!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^Q4aP!Q![4dQ4iRzQ!Q![4d!g!h4r#X#Y4rQ4uR{|5O}!O5O!Q![5UQ5RP!Q![5UQ5ZP{Q!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rQ5rR!Q![4d!g!h4r#X#Y4r~6QO!]~V6VPST!Q![4d~6_bV~uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~7jR!Q![7s!c!i7s#T#Z7s~7vR!Q![8P!c!i8P#T#Z8P~8UgY~uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~;[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq~MPe}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~Ned}!OL|!O!PNb!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~! vg}!OL|!O!PNb!Q![L|![!]6Y!c!d!#_!d!}L|#R#SL|#T#U!#_#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!#bi}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!%P!v!}L|#R#SL|#T#gL|#g#h!%P#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!%Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!&q!h!}L|#R#SL|#T#XL|#X#Y!&q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!&ve`~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!([i}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!)y!u!}L|#R#SL|#T#fL|#f#g!)y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!)|g}!OL|!O!PNb!Q![L|![!]6Y!c!d!+e!d!}L|#R#SL|#T#U!+e#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!+hi}!OL|!O!PNb!Q![L|![!]6Y!c!rL|!r!s!-V!s!}L|#R#SL|#T#dL|#d#e!-V#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!-Yi}!OL|!O!PNb!Q![L|![!]6Y!c!jL|!j!k!.w!k!}L|#R#SL|#T#[L|#[#]!.w#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!.|e!a~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!0bi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!2P!u!}L|#R#SL|#T#fL|#f#g!2P#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!2Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!3q!h!}L|#R#SL|#T#XL|#X#Y!3q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!3ti}!OL|!O!PNb!Q![L|![!]6Y!c!hL|!h!i!5c!i!}L|#R#SL|#T#YL|#Y#Z!5c#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!5fi}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!7T!l!}L|#R#SL|#T#]L|#]#^!7T#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!7Wi}!OL|!O!PNb!Q![L|![!]6Y!c!zL|!z!{!8u!{!}L|#R#SL|#T#lL|#l#m!8u#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!8ze^~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!:`i}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!;}!h!}L|#R#SL|#T#XL|#X#Y!;}#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!<Qi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!=o!u!}L|#R#SL|#T#fL|#f#g!=o#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!=ri}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!?a!v!}L|#R#SL|#T#gL|#g#h!?a#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!?di}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!AR!l!}L|#R#SL|#T#]L|#]#^!AR#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!AUi}!OL|!O!PNb!Q![L|![!]6Y!c!qL|!q!r!Bs!r!}L|#R#SL|#T#cL|#c#d!Bs#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Bvi}!OL|!O!PNb!Q![L|![!]6Y!c!pL|!p!q!De!q!}L|#R#SL|#T#bL|#b#c!De#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Djeb~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!FQTq~XY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FdTXY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FxOl~~!F}Op~~!GQP#Q#R!GT~!GYOw~~!G]P![!]!G`~!Gc_!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb%W%o!Hb%p&a!Hb&b1p!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Hgdk~}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Ixd}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!K]eh~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Lqf}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#U!NV#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!NYg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a# q#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~# tg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h##]#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~##`g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#$w#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#$|e!O~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#&bg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#'y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#'|g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#)e#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#)hg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#+P#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#+Ue}~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|V#,lP!dP#p#q#,oU#,tO!ZU~#,wP#q#r#,z~#-PO!Y~~#-UO!c~~#-ZO!W~\",\n tokenizers: [0, 1, 2],\n topRules: {\"TurtleDoc\":[0,2],\"TrigDoc\":[1,61],\"NTriplesDoc\":[2,71],\"NQuadsDoc\":[3,74]},\n tokenPrec: 931\n})\n","import type { NodePropSource } from '@lezer/common';\nimport { styleTags, tags as t } from '@lezer/highlight';\n\n/**\n * The shared highlight-tag table, Turtle half.\n *\n * `docs/highlight-tags.md` is the canonical table and `test/highlight.test.ts`\n * asserts this against it, so a consumer can keep one `HighlightStyle` for all\n * three languages. Two conventions are worth knowing:\n *\n * - an IRI and a prefixed name are tagged differently (`url` / `namespace`)\n * but denote the same kind of thing, so a style is free to colour them the\n * same — which is what the reference style does;\n * - a datatype IRI is tagged `typeName` rather than `url`, because it\n * qualifies the literal rather than being a term the document is about. The\n * parent-path rules below are more specific than the bare token rules, so\n * they win inside `Datatype`.\n */\nexport const turtleHighlighting: NodePropSource = styleTags({\n Comment: t.comment,\n\n 'AtPrefix AtBase AtVersion KwPrefix KwBase KwGraph KwVersion KeywordA': t.keyword,\n\n IRIRef: t.url,\n 'PNameNS PNameLN': t.namespace,\n\n 'BlankNodeLabel Anon': t.propertyName,\n\n 'String VersionSpecifier': t.string,\n 'Integer Decimal Double': t.number,\n 'True False': t.bool,\n\n LangDir: t.annotation,\n 'Datatype/IRIRef Datatype/PrefixedName/PNameNS Datatype/PrefixedName/PNameLN': t.typeName,\n 'Datatype/\"^^\"': t.typeName,\n\n /*\n * The RDF 1.2 term brackets are tagged apart from ordinary grouping, because\n * `<< s p o >>` and `<<( s p o )>>` differ by one character and mean quite\n * different things — a statement you can refer to, versus an object that *is*\n * a triple. A style that cannot separate them cannot help a reader see that.\n *\n * Each is a `special()` of the standard tag its glyphs actually are, so the\n * fallback chain does the work: a theme that knows nothing about RDF 1.2 and\n * styles `bracket` (or `brace`/`paren`/`angleBracket`) still colours all of\n * them, and one that wants the distinction overrides the specific tag.\n */\n\n /*\n * Every token *inside* an RDF 1.2 nested-triple construct also carries\n * `quote`, so a style can shade the whole thing and not just its brackets —\n * which is what \"colour reified triples differently\" usually means. The\n * `/...` form applies to descendants and *combines* with each token's own\n * tag, so an IRI inside a reified triple is `quote url`, not one or the\n * other. A style that never mentions `quote` sees no change at all.\n *\n * One tag for all three constructs, rather than three: the brackets above\n * already say which kind it is, and a style wanting per-kind regions can add\n * its own props to the exported parser.\n */\n 'ReifiedTriple/... TripleTerm/... NTripleTerm/... AnnotationBlock/...': t.quote,\n\n '\"<<\" \">>\"': t.special(t.angleBracket),\n '\"<<(\" \")>>\"': t.special(t.paren),\n '\"{|\" \"|}\"': t.special(t.brace),\n '\"{\" \"}\"': t.brace,\n '\"[\" \"]\"': t.squareBracket,\n '\"(\" \")\"': t.paren,\n\n // The reifier marker only ever introduces a reifier, so it is worth telling\n // from arithmetic; it falls back to `operator`.\n '\"~\"': t.special(t.operator),\n\n '\";\" \",\"': t.separator,\n '\".\"': t.punctuation,\n});\n","import { syntaxTree } from '@codemirror/language';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { EditorState } from '@codemirror/state';\n\n/** A prefix label (without the colon) mapped to the IRI it expands to. */\nexport type PrefixMap = Record<string, string>;\n\n/** Where `turtle()` and friends may look for prefixes beyond the document. */\nexport type PrefixSource = PrefixMap | ((state: EditorState) => PrefixMap);\n\nexport interface CompletionOptions {\n /**\n * Prefixes the editor should offer even when the document has not declared\n * them — an application's own prefix manager, typically. Document\n * declarations win on conflict, because what the document says is what the\n * document means.\n */\n prefixSource?: PrefixSource;\n}\n\nconst DIRECTIVES = ['@prefix', '@base', 'PREFIX', 'BASE'];\nconst TRIG_DIRECTIVES = [...DIRECTIVES, 'GRAPH'];\nconst TERM_KEYWORDS = ['a', 'true', 'false'];\n\n/** Nodes whose interior is text, not syntax: no completion belongs there. */\nconst INERT = new Set(['Comment', 'String', 'VersionSpecifier', 'IRIRef']);\n\n/**\n * The prefixes declared by the document itself, read from the syntax tree.\n *\n * Both spellings are read — `@prefix ex: <…>` and `PREFIX ex: <…>` — because a\n * document may mix them, and a reader completing `ex:` does not care which one\n * declared it.\n */\nexport function documentPrefixes(state: EditorState): PrefixMap {\n const prefixes: PrefixMap = {};\n const tree = syntaxTree(state);\n tree.iterate({\n enter: (node) => {\n if (node.name !== 'PrefixID' && node.name !== 'SparqlPrefix') return;\n let label: string | null = null;\n let iri: string | null = null;\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name === 'PNameNS' && label === null) {\n label = state.sliceDoc(child.from, child.to).slice(0, -1);\n } else if (child.name === 'IRIRef' && iri === null) {\n iri = state.sliceDoc(child.from + 1, child.to - 1);\n }\n }\n if (label !== null) prefixes[label] = iri ?? '';\n },\n });\n return prefixes;\n}\n\nfunction resolveSource(source: PrefixSource | undefined, state: EditorState): PrefixMap {\n if (!source) return {};\n return typeof source === 'function' ? source(state) : source;\n}\n\n/** Every prefix the editor knows about: the external source, overlaid by the document's. */\nexport function knownPrefixes(state: EditorState, options: CompletionOptions = {}): PrefixMap {\n return { ...resolveSource(options.prefixSource, state), ...documentPrefixes(state) };\n}\n\nfunction prefixCompletions(state: EditorState, options: CompletionOptions): Completion[] {\n const prefixes = knownPrefixes(state, options);\n return Object.entries(prefixes).map(([label, iri]) => ({\n label: `${label}:`,\n type: 'namespace',\n detail: iri || undefined,\n }));\n}\n\nfunction keywordCompletions(words: readonly string[]): Completion[] {\n return words.map((label) => ({ label, type: 'keyword' }));\n}\n\n/**\n * Is the cursor inside a literal or IRI that has not been closed yet?\n *\n * A half-typed `\"some tex` or `<http://ex` never reaches a `String` or\n * `IRIRef` node — it is error debris, and the error node covers only the last\n * word — so the node name cannot answer this. Scanning the line up to the\n * cursor can, and it is the state a reader is in while typing one.\n *\n * Two details earn their place. `<<` is not an IRI, so it does not open one,\n * which keeps completion alive inside a half-typed reified triple. And an IRI\n * cannot contain a space, so whitespace closes the scan rather than\n * suppressing completion for the rest of the line.\n *\n * The scan is line-local, so an unterminated *long* string (`\"\"\"…`) spanning\n * lines is not detected past its first line. Terminated ones are, through the\n * `String` node above.\n */\nfunction inUnterminatedTerm(state: EditorState, pos: number): boolean {\n const line = state.doc.lineAt(pos);\n const text = line.text.slice(0, pos - line.from);\n let quote: string | null = null;\n let angle = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (quote) {\n if (ch === '\\\\') i++;\n else if (ch === quote) quote = null;\n } else if (angle) {\n if (ch === '>' || ch === ' ' || ch === '\\t') angle = false;\n } else if (ch === '\"' || ch === \"'\") {\n quote = ch;\n } else if (ch === '<' && text[i + 1] !== '<') {\n angle = true;\n }\n }\n return quote !== null || angle;\n}\n\n/**\n * Completion for Turtle-family documents.\n *\n * Deliberately context-light: it offers directives, the three term keywords and\n * the document's prefixes wherever a word is being typed, rather than trying to\n * work out whether the cursor is in a subject or an object position. In an\n * error-tolerant tree a half-typed statement usually has no reliable position\n * to read, and a wrong context is worse than a slightly long list.\n */\nexport function turtleCompletionSource(\n options: CompletionOptions = {},\n dialect: 'turtle' | 'trig' = 'turtle'\n) {\n return (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/[@A-Za-z_][\\w.-]*:?/);\n if (!word && !context.explicit) return null;\n const from = word ? word.from : context.pos;\n\n const node = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (INERT.has(node.name)) return null;\n if (inUnterminatedTerm(context.state, context.pos)) return null;\n\n const directives = dialect === 'trig' ? TRIG_DIRECTIVES : DIRECTIVES;\n return {\n from,\n options: [\n ...keywordCompletions(directives),\n ...keywordCompletions(TERM_KEYWORDS),\n ...prefixCompletions(context.state, options),\n ],\n validFor: /^[@A-Za-z_][\\w.-]*:?$/,\n };\n };\n}\n","import { ensureSyntaxTree } from '@codemirror/language';\nimport { linter } from '@codemirror/lint';\nimport type { EditorState, Extension } from '@codemirror/state';\n\nexport interface ParseError {\n from: number;\n to: number;\n message: string;\n}\n\n/**\n * How long to spend completing the parse before reporting errors. A partial\n * tree ends in error nodes that are not in the document, so nothing is\n * reported until the parse reaches the end.\n */\nconst PARSE_TIMEOUT_MS = 1000;\n\n/** Whitespace and `#` comments: what may separate error nodes in one run. */\nconst GAP = /^(?:\\s|#.*)*$/;\n\n/**\n * Every parse error in the document.\n *\n * The parser recovers by skipping one token at a time, so `this is a test`\n * produces four error nodes. Nodes separated only by whitespace or comments are\n * merged into one error.\n */\nexport function parseErrors(state: EditorState): ParseError[] {\n const tree = ensureSyntaxTree(state, state.doc.length, PARSE_TIMEOUT_MS);\n if (!tree) return [];\n const runs: { from: number; to: number }[] = [];\n tree.iterate({\n enter: (node) => {\n if (!node.type.isError) return;\n const last = runs[runs.length - 1];\n if (last && (node.from <= last.to || GAP.test(state.sliceDoc(last.to, node.from))))\n last.to = Math.max(last.to, node.to);\n else runs.push({ from: node.from, to: node.to });\n },\n });\n return runs.map(({ from, to }) => ({ from, to, message: errorMessage(state.sliceDoc(from, to)) }));\n}\n\nfunction errorMessage(text: string): string {\n const shown = text.replace(/\\s+/g, ' ').trim();\n if (!shown) return 'Syntax error.';\n return `Unexpected “${shown.length > 32 ? `${shown.slice(0, 32)}…` : shown}”.`;\n}\n\n/** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()` and `nquads()`. */\nexport function parseErrorLinter(): Extension {\n return linter((view) => parseErrors(view.state).map((error) => ({ ...error, severity: 'error' })));\n}\n","import type { SyntaxNode } from '@lezer/common';\nimport type { EditorState } from '@codemirror/state';\nimport {\n LRLanguage,\n LanguageSupport,\n delimitedIndent,\n foldInside,\n foldNodeProp,\n indentNodeProp,\n syntaxTree,\n} from '@codemirror/language';\nimport type { LRParser } from '@lezer/lr';\nimport { parser as rawParser } from './turtle.grammar';\nimport { turtleHighlighting } from './highlight';\nimport { turtleCompletionSource } from './complete';\nimport type { CompletionOptions } from './complete';\nimport { parseErrorLinter } from './lint';\n\nexport type { CompletionOptions, PrefixMap, PrefixSource } from './complete';\nexport { documentPrefixes, knownPrefixes, turtleCompletionSource } from './complete';\nexport { turtleHighlighting } from './highlight';\nexport { parseErrorLinter, parseErrors } from './lint';\nexport type { ParseError } from './lint';\n\n/** The unconfigured grammar, for callers that want their own `top` or props. */\nexport const parser: LRParser = rawParser;\n\n/**\n * Fold a whole statement from the end of its first line.\n *\n * This is the one fold in Turtle with no brackets around it: a subject with a\n * long `;` list is the common shape a reader wants collapsed, and the structure\n * that shape has is a statement, not a delimiter.\n *\n * It stands aside when a bracket opens on the same line. Folding\n * `ex:s ex:p [` at the statement level would hide the `] .` as well, leaving\n * what is left looking unterminated; the bracket's own fold — which CodeMirror\n * would otherwise never reach, since the statement node encloses it — reads\n * correctly.\n */\nconst statementFold = (node: SyntaxNode, state: EditorState) => {\n const firstLineEnd = state.doc.lineAt(node.from).to;\n if (node.to <= firstLineEnd) return null;\n for (let n: SyntaxNode | null = syntaxTree(state).resolveInner(firstLineEnd, -1); n; n = n.parent) {\n if (n.from < node.from) break;\n if (n.type.prop(foldNodeProp) && n.from <= firstLineEnd && n.to > firstLineEnd && n.type !== node.type) return null;\n }\n return { from: firstLineEnd, to: node.to };\n};\n\n/**\n * Highlighting, folding and indentation, shared by all four dialects.\n *\n * Exported so a consumer can re-configure the parser with props of their own —\n * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart\n * rather than all as `quote`. `codemirror-lang-sparql12` exports `sparqlProps`\n * for the same reason.\n */\nexport const turtleProps = [\n turtleHighlighting,\n indentNodeProp.add({\n BlankNodePropertyList: delimitedIndent({ closing: ']' }),\n Collection: delimitedIndent({ closing: ')' }),\n WrappedGraph: delimitedIndent({ closing: '}' }),\n AnnotationBlock: delimitedIndent({ closing: '|}' }),\n TripleTerm: delimitedIndent({ closing: ')>>' }),\n ReifiedTriple: delimitedIndent({ closing: '>>' }),\n }),\n foldNodeProp.add({\n BlankNodePropertyList: foldInside,\n Collection: foldInside,\n WrappedGraph: foldInside,\n AnnotationBlock: foldInside,\n 'Triples Triples2 TriplesOrGraph': statementFold,\n }),\n];\n\nconst languageData = {\n commentTokens: { line: '#' },\n closeBrackets: { brackets: ['[', '(', '<', '\"', \"'\"] },\n indentOnInput: /^\\s*[\\]})]$/,\n};\n\nfunction define(top: string) {\n return LRLanguage.define({\n name: top === 'TurtleDoc' ? 'turtle' : top === 'TrigDoc' ? 'trig' : top === 'NTriplesDoc' ? 'ntriples' : 'nquads',\n parser: rawParser.configure({ top, props: turtleProps }),\n languageData,\n });\n}\n\nexport const turtleLanguage = define('TurtleDoc');\nexport const trigLanguage = define('TrigDoc');\nexport const ntriplesLanguage = define('NTriplesDoc');\nexport const nquadsLanguage = define('NQuadsDoc');\n\nfunction support(language: LRLanguage, options: CompletionOptions, dialect: 'turtle' | 'trig') {\n return new LanguageSupport(language, [\n language.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),\n parseErrorLinter(),\n ]);\n}\n\n/** RDF 1.2 Turtle. */\nexport function turtle(options: CompletionOptions = {}): LanguageSupport {\n return support(turtleLanguage, options, 'turtle');\n}\n\n/** RDF 1.2 TriG. */\nexport function trig(options: CompletionOptions = {}): LanguageSupport {\n return support(trigLanguage, options, 'trig');\n}\n\n/**\n * RDF 1.2 N-Triples.\n *\n * A strict subset with its own entry point rather than Turtle in a lenient\n * mood: a prefixed name or a `;` list in an N-Triples document is an error, and\n * an editor that colours it as valid is lying about the file it will write.\n */\nexport function ntriples(): LanguageSupport {\n return new LanguageSupport(ntriplesLanguage, parseErrorLinter());\n}\n\n/** RDF 1.2 N-Quads. */\nexport function nquads(): LanguageSupport {\n return new LanguageSupport(nquadsLanguage, parseErrorLinter());\n}\n"],"names":["parser","LRParser","styleTags","t","syntaxTree","ensureSyntaxTree","linter","rawParser","foldNodeProp","indentNodeProp","delimitedIndent","foldInside","LRLanguage","language","LanguageSupport"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/turtle.grammar","../src/highlight.ts","../src/complete.ts","../src/lint.ts","../src/index.ts"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nconst spec_patchWord = {__proto__:null,H:248, TX:252, PA:256, PD:260, A:262, D:266, TC:268, TA:270}\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"<UQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOQ!jQQOOOOQO'#Ce'#CeOOQO'#Eo'#EoO#OQPO'#CaO#TQPO'#CgO#`QPO'#CiO#TQPO'#CkO#eQPO'#CmO#jQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$pQSO'#C{O$wQPO'#DOO%VQPO'#DbO$wQPO'#CqO%kQPO'#CqOOQO'#En'#EnO&PQPO'#EnOOQO'#Ea'#EaQYQPOOOOQO'#Dn'#DnO&UQPO'#DqO&cQPO'#DlO&tQPO'#DsO'VQPO'#DsO'hQPO'#DtO$wQPO'#DtOOQO'#Ew'#EwOOQO'#Ev'#EvOOQO'#Ef'#EfQ!WQPOOOOQO'#Ey'#EyOOQO'#Eg'#EgQ!bQPOOO#TQPO'#DvOOQO'#Eh'#EhQ!bQPOOO#TQPO'#DyOOQO'#D}'#D}O'yQQO'#D|OOQO'#ER'#ERO(OQPO'#EQOOQO'#ET'#ETO(TQQO'#ESOOQO'#EW'#EWO(TQQO'#EVOOQO'#EY'#EYO!bQPO'#EXOOQO'#E['#E[O!bQPO'#EZOOQO'#FP'#FPO(]QQO'#EPOOQO'#Ez'#EzOOQO'#Ei'#EiQ!jQQOOO#TQPO,58{O(qQPO,59RO#TQPO,59TOOQO,59V,59VOOQO,59X,59XO(vQPO,59XOOQO'#Eb'#EbO({QSO,59gOOQO,59g,59gO)SQSO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#Eq'#EqO&cQPO'#D_OOQO'#Ep'#EpOOQO'#Cs'#CsO*^QPO,59jO*cQSO'#CrOOQO'#Et'#EtO$wQPO,59|OOQO,59],59]OOQO,5;Y,5;YOOQO-E8_-E8_O+SQPO'#DrOOQO,5:],5:]O+[QPO,5:]O'QQPO,5:WOOQO,5:_,5:_O+aQPO,5:_OOQO,5:`,5:`O+fQPO,5:`OOQO-E8d-E8dOOQO-E8e-E8eO+kQQO,5:bOOQO-E8f-E8fO+kQQO,5:eOOQO'#EO'#EOO+yQQO,5:hOOQO,5:l,5:lOOQO'#EU'#EUOOQO'#FR'#FRO,UQPO,5:nO,ZQPO,5:qO,`QPO,5:sO,eQPO'#FUO,jQPO,5:uOOQO'#Ej'#EjO(]QQO,5:kOOQO'#E^'#E^O,oQPO'#E]OOQO'#E`'#E`O,tQPO'#E_OOQO,5:k,5:kOOQO-E8g-E8gO,yQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E8`-E8`OOQO1G/R1G/RO#TQPO'#DSOOQO,59k,59kOOQO'#Er'#ErO$wQPO,59yOOQO1G/U1G/UO-OQQO'#DPO-pQQO'#CuO.UQPO,59^O.aQSO1G/hO.zQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO/XQPO'#DPOOQO'#Ex'#ExO!bQPO'#DwO/sQPO1G/|O/xQPO1G0POOQO'#E}'#E}O0TQPO1G0SO0YQPO1G0YOOQO1G0]1G0]OOQO1G0_1G0_O+kQQO,5;pOOQO1G0a1G0aOOQO-E8h-E8hOOQO1G0V1G0VOOQO,5:w,5:wOOQO,5:y,5:yOOQO7+$R7+$ROOQO,59n,59nO0_QSO1G/eO0xQSO'#DcO$wQPO'#DhOOQO'#Ec'#EcO1`QQO'#DeO*cQSO'#EdO1tQPO,59aO1tQPO,59aO2eQPO'#EeO2oQPO1G.xOOQO'#Eu'#EuO2zQPO7+%SO3SQWO'#DcOOQO1G/x1G/xO3jQPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO3oQPO7+%kOOQO7+%n7+%nOOQO7+%t7+%tO3tQPO1G1[OOQO'#Es'#EsO4PQPO7+%POOQO,59},59}O4UQPO,5:SOOQO-E8a-E8aO4ZQQO,5;OOOQO-E8b-E8bO4oQPO1G.{O*cQSO,5;POOQO-E8c-E8cO4}QPO'#DcOOQO<<Hn<<HnO5UQPO<<HnO+kQQO1G/}OOQO<<IV<<IVOOQO7+&v7+&vOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0j1G0jOOQO1G0k1G0kOOQOAN>YAN>YO5ZQPO7+%iOOQO<<IT<<ITO5`QQO'#CuO5tQQO'#DeO6YQQO,5;OO*cQSO,5;PO*cQSO'#CrO*cQSO'#EdO6nQPO,59aO6nQPO,59aO6|QPO'#EeO7WQPO1G.xO7cQPO1G.{O7qQPO,59^\",\n stateData: \"8`~O#aOSPOS~OUVOVTOWUOYTO[WO^XO`YObZOd[Ok^Ol^On_Oq`O!TaO~O!ajO!diO~PYOWsOksO~O#pzO#r|O#t!OO#v!QO#w!SO#y!UO~OV!]O~OVTOWUOYTO~OV!_O~Oc!aO~Oc!bO~OVTOWUOYTOk^Ol^On_Oq`Ot!fOy!gOz!gO{!gO}!hO!O!hO!Q!jO!TaO~Om!eO~P#oOVTOWUOYTOh!lO~OVTOWUOYTOk^Ol^O!TaO~OVTOWUOYTOh!lOSeX!ceX~OS!rO~On_Oq`O!c!uO~P%VOVTOWUOYTOk^Ol^O~OVTOWUOYTOh!lO!diO~OS!xOVTOWUOYTOh!lO~OS!zOVTOWUOYTOh!lO~O#o#RO~OS#TO~Ot#VO#o#UO~O#t!OO#v!QO#w!SO#y!UO#z#_O#{#aO~OS#fO~OS#hO~Om#jO~P#oOu#lOw#kOVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsX~Op#oO~On_Oq`Ot#pOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOS#tO!c!fX~O!c#uO~OS#wO~OS#xO~OW#zOk#zOt#yO!Q#{O~OW$OOk$OOt#yO~OW$QO~OS$RO~OS$SO~OW$TO~OS$UO~OS$XO~OS$YO~OS$ZO~Ou#lOw#kOpsX!WsX!ZsX!]sX!^sXSsX!csX!YsX~O!W$^O!Z$_O!]$bOpiX!^iX!YiX~O!^$eOpfa!Yfa~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOn_Oq`O!c!fa~P%VOu#lOw#kOSsXWsXksX!SsX!WsX!PsX~OS$lO~OS$nOW$mOk$mO~OS$pO~OS$qO~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P&cOp!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P&cO!W$^O!Z$_Op!XX!]!XX!^!XX!Y!XX~O!]$bOpia!^ia!Yia~OVTOWUOYTOh!lO!^#XX~Op#XX!Y#XX~P2SO!^$eOpfi!Yfi~O!S%OO!W$}O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P&cOW%QO~OS%RO~OW$mOk$mOS#xi~O!P%TO~O!Y%UO~O!W$^O!Z$_Op#Wa!]#Wa!^#Wa!Y#Wa~O!]$bOpii!^ii!Yii~O!S!VX~P&cO!S%XO~O!P%ZO~O!W$iO!Z$_O!]%aOSiX!^iX!ciX~O!W$iO!Z$_OS!XX!]!XX!^!XX!c!XX~O!W$iO!Z$_OS#Wa!]#Wa!^#Wa!c#Wa~O!]%aOSia!^ia!cia~OS#XX!c#XX~P2SO!^%dOSfi!cfi~O!]%aOSii!^ii!cii~O!^%dOSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~\",\n goto: \"2a#yPPP#zP$SPPP$YP$SP$SP$SP$SPPP%V%_%qP&Z&ePPPP']PP'q(VPP(lP(qPPP(qPPPP(}PP)_)yP*UPP*`PPP*hP*lPP*s*}*h*hP+T+XP+_+cP+i+m+q+i+t+x+|,S,Y+|,^+|,d+|,j,p,v,p,z-O-U-[-h-z.U.[.b.h.nPPP.t.x0e(}0w0z0}1Q1T$O1X1e1tPP1xP1{P2TPP2ZSdOgTpPrX]OPgr!uUOPWY_`abcgijklmnrvy!]!_!d!j!n!p#k#n#s#t$]$^$_$b$e$i${$}%_%`%a%dSeOgT!ti#tQ!m`S!qbcS!yklS!{mnR$v$_S!n`$_Q#s!pQ$]#nQ${$eQ%_%d]%`bcklmnQ#r!nS%W${%_R%g%`WbOgi#tUhPjr`!k_!d!n$b${%_%`%aQ!oaQ#m!jQ$g#sQ$s$]V$u$^$i$}WbOgi#tSnPra!k_!d!n$b${%_%`%aWcOgi#tSmPra!k_!d!n$b${%_%`%ad!i_!d!n#s$]$b${%_%`%aW#z#O#Q$T%QR$O#SV#l!f#p#ye!i_!d!n#s$]$b${%_%`%a`!k_!d!n$b${%_%`%aQ$g#sR$s$]WcOgi#tSlPr`!k_!d!n$b${%_%`%aQ!oaR$g#s[$`#q$a$x%[%]%^R%P$hQ$d#qS%V$x%^R%c%[]$`#q$a$x%[%]%^ToPrSkPrR!wjSoPrQ!xkR#v!wQ!viR$j#tTtQuX#z#O#Q$T%QTwRxQ$o#}R%S$rT!YS![T{S![R#S{T!XS![T}S![X!WS!X![#^X!PS!X![#^T#V!P!RX!RS!X![#^X!TS!X![#^X!VS!X![#^Q#c!XR$W#^T#`!X#^T#b!X#^QgOR!sgQ!d_R#i!dS$a#q$xS$w$a%]T%]%[%^Q$c#qW$y$c$z%b%fQ$z$dQ%b%[R%f%cQ$f#rS$|$f%eR%e%gQrPR!|rQuQR!}uQxRR#PxQ![SR#d![Q#^!XR$V#^TfOgWbOgi#tUhPjrQ!^WQ!`Y`!k_!d!n$b${%_%`%ah!l`bcklmn!p#n$_$e%dQ!oaQ#OvQ#QyQ#e!]Q#g!_Q#m!jQ$[#kQ$g#sQ$s$]V$u$^$i$}S!c_!dS#q!n${Q$x$bS%[%_%`R%^%aR#n!jR$t$]R!paR$h#sTqPrQ#|#OQ#}#QQ$r$TR%Y%QSvQuSyRxS#Z!T!VR$k#{T!ZS![R$P#SS!YS![T#]!X#^Q#W!PR#X!RQ#Y!TR#[!V\",\n nodeNames: \"⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel RdfPatchDoc Header KwH HeaderKey Transaction TxBegin KwTX PrefixAdd KwPA PatchPrefix PrefixDelete KwPD QuadAdd KwA QuadDelete KwD TxCommit KwTC TxAbort KwTA\",\n maxTerm: 135,\n nodeProps: [\n [\"openedBy\", 29,\"(\",32,\"[\",47,\"<<(\",50,\"<<\",56,\"{|\",65,\"{\"],\n [\"closedBy\", 30,\")\",33,\"]\",48,\")>>\",51,\">>\",57,\"|}\",66,\"}\"]\n ],\n skippedNodes: [0,1],\n repeatNodeCount: 10,\n tokenData: \"#.o~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! u!e!iL|!i!j!(c!j!rL|!r!s!0s!s!xL|!x!y!:}!y!}L|!}#O!F{#P#Q!Gx#Q#R!G}#R#S!HY#T#U!LW#U#V! u#V#YL|#Y#Z!Mp#Z#[!(c#[#dL|#d#e!0s#e#hL|#h#i#'k#i#jL|#j#k!:}#k#oL|#o#p#-{#p#q#.Y#q#r#.e#r#s#.j%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS#a~XY$zYZ$z]^$zpq$zV%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&rOtUcPV&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gV'hR!Q!['q!c!i'q#T#Z'qV'tR!Q!['}!c!i'}#T#Z'}V(QR!Q![(Z!c!i(Z#T#Z(ZV(^R!Q![(g!c!i(g#T#Z(gV(jR!Q![(s!c!i(s#T#Z(sV(vR!Q![)P!c!i)P#T#Z)PV)SR!Q![)]!c!i)]#T#Z)]V)`R!Q![%{!c!i%{#T#Z%{V)lP;=`<%l%{V)vPtUcPrs)yU)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yU*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yU*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yU+^OtUU+aP;=`<%l)yU+gRO;'S)y;'S;=`+p;=`O)yU+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]V,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zV.{R!Q![/U!c!i/U#T#Z/UV/XR!Q![/b!c!i/b#T#Z/bV/eR!Q![/n!c!i/n#T#Z/nV/qR!Q![/z!c!i/z#T#Z/zV/}R!Q![0W!c!i0W#T#Z0WV0ZR!Q![0d!c!i0d#T#Z0dV0gR!Q![0p!c!i0p#T#Z0pV0sR!Q![-g!c!i-g#T#Z-gV1PP;=`<%l-gV1ZPtUcPwx1^U1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^U1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^U2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^U2oP;=`<%l1^U2uRO;'S1^;'S;=`3O;=`O1^U3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~T3uPmS!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^S4aP!Q![4dS4iRzS!Q![4d!g!h4r#X#Y4rS4uR{|5O}!O5O!Q![5US5RP!Q![5US5ZP{S!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rS5rR!Q![4d!g!h4r#X#Y4r~6QO!]~_6VPSZ!Q![4d]6_bV]uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]7jR!Q![7s!c!i7s#T#Z7s]7vR!Q![8P!c!i8P#T#Z8P]8UgY]uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P];[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq_MRe#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_Ngd}!OL|!O!PNd!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_! zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!#c!d!}L|#R#SL|#T#U!#c#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!#hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!%V!v!}L|#R#SL|#T#gL|#g#h!%V#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!%[i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!&y!h!}L|#R#SL|#T#XL|#X#Y!&y#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!'Qe#oQ`P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!(hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!*V!u!}L|#R#SL|#T#fL|#f#g!*V#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!*[g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!+s!d!}L|#R#SL|#T#U!+s#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!+xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!rL|!r!s!-g!s!}L|#R#SL|#T#dL|#d#e!-g#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!-li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!jL|!j!k!/Z!k!}L|#R#SL|#T#[L|#[#]!/Z#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!/be#oQ!aP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!0xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!2g!u!}L|#R#SL|#T#fL|#f#g!2g#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!2li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!4Z!h!}L|#R#SL|#T#XL|#X#Y!4Z#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!4`i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!hL|!h!i!5}!i!}L|#R#SL|#T#YL|#Y#Z!5}#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!6Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!7q!l!}L|#R#SL|#T#]L|#]#^!7q#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!7vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!zL|!z!{!9e!{!}L|#R#SL|#T#lL|#l#m!9e#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!9le#oQ^P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!;Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!<q!h!}L|#R#SL|#T#XL|#X#Y!<q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!<vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!>e!u!}L|#R#SL|#T#fL|#f#g!>e#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!>ji#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!@X!v!}L|#R#SL|#T#gL|#g#h!@X#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!@^i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!A{!l!}L|#R#SL|#T#]L|#]#^!A{#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!BQi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!qL|!q!r!Co!r!}L|#R#SL|#T#cL|#c#d!Co#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Cti#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!pL|!p!q!Ec!q!}L|#R#SL|#T#bL|#b#c!Ec#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Eje#oQbP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!GQTq~XY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GdTXY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GxOl~~!G}Op~~!HQP#Q#R!HT~!HYOw~~!H]P![!]!H`~!Hc_!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib%W%o!Ib%p&a!Ib&b1p!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Igdk~}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Jxd}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib_!L_e#oQhP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Muf#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#U# Z#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_# `g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a#!w#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#!|g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h#$e#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#$jg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#&R#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#&Ye#oQ!OS}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#'pg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#)X#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#)^g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#*u#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#*zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#,c#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#,je#oQ}S}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#.QP!dP#p#q#.T^#.YO!Z^~#.]P#q#r#.`~#.eO!Y~~#.jO!c~~#.oO!W~\",\n tokenizers: [0, 1, 2, 3],\n topRules: {\"TurtleDoc\":[0,2],\"TrigDoc\":[1,61],\"NTriplesDoc\":[2,71],\"NQuadsDoc\":[3,74],\"RdfPatchDoc\":[4,77]},\n specialized: [{term: 123, get: (value) => spec_patchWord[value] || -1}],\n tokenPrec: 1056\n})\n","import type { NodePropSource } from '@lezer/common';\nimport { styleTags, tags as t } from '@lezer/highlight';\n\n/**\n * The shared highlight-tag table, Turtle half.\n *\n * `docs/highlight-tags.md` is the canonical table and `test/highlight.test.ts`\n * asserts this against it, so a consumer can keep one `HighlightStyle` for all\n * three languages. Two conventions are worth knowing:\n *\n * - an IRI and a prefixed name are tagged differently (`url` / `namespace`)\n * but denote the same kind of thing, so a style is free to colour them the\n * same — which is what the reference style does;\n * - a datatype IRI is tagged `typeName` rather than `url`, because it\n * qualifies the literal rather than being a term the document is about. The\n * parent-path rules below are more specific than the bare token rules, so\n * they win inside `Datatype`.\n */\nexport const turtleHighlighting: NodePropSource = styleTags({\n Comment: t.comment,\n\n 'AtPrefix AtBase AtVersion KwPrefix KwBase KwGraph KwVersion KeywordA': t.keyword,\n\n IRIRef: t.url,\n 'PNameNS PNameLN': t.namespace,\n\n 'BlankNodeLabel Anon': t.propertyName,\n\n 'String VersionSpecifier': t.string,\n 'Integer Decimal Double': t.number,\n 'True False': t.bool,\n\n LangDir: t.annotation,\n 'Datatype/IRIRef Datatype/PrefixedName/PNameNS Datatype/PrefixedName/PNameLN': t.typeName,\n 'Datatype/\"^^\"': t.typeName,\n\n /*\n * The RDF 1.2 term brackets are tagged apart from ordinary grouping, because\n * `<< s p o >>` and `<<( s p o )>>` differ by one character and mean quite\n * different things — a statement you can refer to, versus an object that *is*\n * a triple. A style that cannot separate them cannot help a reader see that.\n *\n * Each is a `special()` of the standard tag its glyphs actually are, so the\n * fallback chain does the work: a theme that knows nothing about RDF 1.2 and\n * styles `bracket` (or `brace`/`paren`/`angleBracket`) still colours all of\n * them, and one that wants the distinction overrides the specific tag.\n */\n\n /*\n * Every token *inside* an RDF 1.2 nested-triple construct also carries\n * `quote`, so a style can shade the whole thing and not just its brackets —\n * which is what \"colour reified triples differently\" usually means. The\n * `/...` form applies to descendants and *combines* with each token's own\n * tag, so an IRI inside a reified triple is `quote url`, not one or the\n * other. A style that never mentions `quote` sees no change at all.\n *\n * One tag for all three constructs, rather than three: the brackets above\n * already say which kind it is, and a style wanting per-kind regions can add\n * its own props to the exported parser.\n */\n 'ReifiedTriple/... TripleTerm/... NTripleTerm/... AnnotationBlock/...': t.quote,\n\n '\"<<\" \">>\"': t.special(t.angleBracket),\n '\"<<(\" \")>>\"': t.special(t.paren),\n '\"{|\" \"|}\"': t.special(t.brace),\n '\"{\" \"}\"': t.brace,\n '\"[\" \"]\"': t.squareBracket,\n '\"(\" \")\"': t.paren,\n\n // The reifier marker only ever introduces a reifier, so it is worth telling\n // from arithmetic; it falls back to `operator`.\n '\"~\"': t.special(t.operator),\n\n /*\n * RDF Patch. The op codes are keywords. Every token of an `A` or `PA` row also\n * carries `inserted`, and every token of a `D` or `PD` row carries `deleted`,\n * in the same way as `quote` above: a style can colour a patch as a diff, and\n * a style without those tags sees no change.\n */\n 'KwH KwTX KwTC KwTA KwPA KwPD KwA KwD': t.keyword,\n HeaderKey: t.attributeName,\n PatchPrefix: t.namespace,\n 'QuadAdd/... PrefixAdd/...': t.inserted,\n 'QuadDelete/... PrefixDelete/...': t.deleted,\n\n '\";\" \",\"': t.separator,\n '\".\"': t.punctuation,\n});\n","import { syntaxTree } from '@codemirror/language';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { EditorState } from '@codemirror/state';\n\n/** A prefix label (without the colon) mapped to the IRI it expands to. */\nexport type PrefixMap = Record<string, string>;\n\n/** Where `turtle()` and friends may look for prefixes beyond the document. */\nexport type PrefixSource = PrefixMap | ((state: EditorState) => PrefixMap);\n\nexport interface CompletionOptions {\n /**\n * Prefixes the editor should offer even when the document has not declared\n * them — an application's own prefix manager, typically. Document\n * declarations win on conflict, because what the document says is what the\n * document means.\n */\n prefixSource?: PrefixSource;\n}\n\nconst DIRECTIVES = ['@prefix', '@base', 'PREFIX', 'BASE'];\nconst TRIG_DIRECTIVES = [...DIRECTIVES, 'GRAPH'];\nconst TERM_KEYWORDS = ['a', 'true', 'false'];\n\n/** Nodes whose interior is text, not syntax: no completion belongs there. */\nconst INERT = new Set(['Comment', 'String', 'VersionSpecifier', 'IRIRef']);\n\n/**\n * The prefixes declared by the document itself, read from the syntax tree.\n *\n * Both spellings are read — `@prefix ex: <…>` and `PREFIX ex: <…>` — because a\n * document may mix them, and a reader completing `ex:` does not care which one\n * declared it.\n */\nexport function documentPrefixes(state: EditorState): PrefixMap {\n const prefixes: PrefixMap = {};\n const tree = syntaxTree(state);\n tree.iterate({\n enter: (node) => {\n if (node.name !== 'PrefixID' && node.name !== 'SparqlPrefix') return;\n let label: string | null = null;\n let iri: string | null = null;\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name === 'PNameNS' && label === null) {\n label = state.sliceDoc(child.from, child.to).slice(0, -1);\n } else if (child.name === 'IRIRef' && iri === null) {\n iri = state.sliceDoc(child.from + 1, child.to - 1);\n }\n }\n if (label !== null) prefixes[label] = iri ?? '';\n },\n });\n return prefixes;\n}\n\nfunction resolveSource(source: PrefixSource | undefined, state: EditorState): PrefixMap {\n if (!source) return {};\n return typeof source === 'function' ? source(state) : source;\n}\n\n/** Every prefix the editor knows about: the external source, overlaid by the document's. */\nexport function knownPrefixes(state: EditorState, options: CompletionOptions = {}): PrefixMap {\n return { ...resolveSource(options.prefixSource, state), ...documentPrefixes(state) };\n}\n\nfunction prefixCompletions(state: EditorState, options: CompletionOptions): Completion[] {\n const prefixes = knownPrefixes(state, options);\n return Object.entries(prefixes).map(([label, iri]) => ({\n label: `${label}:`,\n type: 'namespace',\n detail: iri || undefined,\n }));\n}\n\nfunction keywordCompletions(words: readonly string[]): Completion[] {\n return words.map((label) => ({ label, type: 'keyword' }));\n}\n\n/**\n * Is the cursor inside a literal or IRI that has not been closed yet?\n *\n * A half-typed `\"some tex` or `<http://ex` never reaches a `String` or\n * `IRIRef` node — it is error debris, and the error node covers only the last\n * word — so the node name cannot answer this. Scanning the line up to the\n * cursor can, and it is the state a reader is in while typing one.\n *\n * Two details earn their place. `<<` is not an IRI, so it does not open one,\n * which keeps completion alive inside a half-typed reified triple. And an IRI\n * cannot contain a space, so whitespace closes the scan rather than\n * suppressing completion for the rest of the line.\n *\n * The scan is line-local, so an unterminated *long* string (`\"\"\"…`) spanning\n * lines is not detected past its first line. Terminated ones are, through the\n * `String` node above.\n */\nfunction inUnterminatedTerm(state: EditorState, pos: number): boolean {\n const line = state.doc.lineAt(pos);\n const text = line.text.slice(0, pos - line.from);\n let quote: string | null = null;\n let angle = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (quote) {\n if (ch === '\\\\') i++;\n else if (ch === quote) quote = null;\n } else if (angle) {\n if (ch === '>' || ch === ' ' || ch === '\\t') angle = false;\n } else if (ch === '\"' || ch === \"'\") {\n quote = ch;\n } else if (ch === '<' && text[i + 1] !== '<') {\n angle = true;\n }\n }\n return quote !== null || angle;\n}\n\n/**\n * Completion for Turtle-family documents.\n *\n * Deliberately context-light: it offers directives, the three term keywords and\n * the document's prefixes wherever a word is being typed, rather than trying to\n * work out whether the cursor is in a subject or an object position. In an\n * error-tolerant tree a half-typed statement usually has no reliable position\n * to read, and a wrong context is worse than a slightly long list.\n */\nexport function turtleCompletionSource(\n options: CompletionOptions = {},\n dialect: 'turtle' | 'trig' = 'turtle'\n) {\n return (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/[@A-Za-z_][\\w.-]*:?/);\n if (!word && !context.explicit) return null;\n const from = word ? word.from : context.pos;\n\n const node = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (INERT.has(node.name)) return null;\n if (inUnterminatedTerm(context.state, context.pos)) return null;\n\n const directives = dialect === 'trig' ? TRIG_DIRECTIVES : DIRECTIVES;\n return {\n from,\n options: [\n ...keywordCompletions(directives),\n ...keywordCompletions(TERM_KEYWORDS),\n ...prefixCompletions(context.state, options),\n ],\n validFor: /^[@A-Za-z_][\\w.-]*:?$/,\n };\n };\n}\n","import { ensureSyntaxTree } from '@codemirror/language';\nimport { linter } from '@codemirror/lint';\nimport type { EditorState, Extension } from '@codemirror/state';\n\nexport interface ParseError {\n from: number;\n to: number;\n message: string;\n}\n\n/**\n * How long to spend completing the parse before reporting errors. A partial\n * tree ends in error nodes that are not in the document, so nothing is\n * reported until the parse reaches the end.\n */\nconst PARSE_TIMEOUT_MS = 1000;\n\n/** Whitespace and `#` comments: what may separate error nodes in one run. */\nconst GAP = /^(?:\\s|#.*)*$/;\n\n/**\n * Every parse error in the document.\n *\n * The parser recovers by skipping one token at a time, so `this is a test`\n * produces four error nodes. Nodes separated only by whitespace or comments are\n * merged into one error.\n */\nexport function parseErrors(state: EditorState): ParseError[] {\n const tree = ensureSyntaxTree(state, state.doc.length, PARSE_TIMEOUT_MS);\n if (!tree) return [];\n const runs: { from: number; to: number }[] = [];\n tree.iterate({\n enter: (node) => {\n if (!node.type.isError) return;\n const last = runs[runs.length - 1];\n if (last && (node.from <= last.to || GAP.test(state.sliceDoc(last.to, node.from))))\n last.to = Math.max(last.to, node.to);\n else runs.push({ from: node.from, to: node.to });\n },\n });\n return runs.map(({ from, to }) => ({ from, to, message: errorMessage(state.sliceDoc(from, to)) }));\n}\n\nfunction errorMessage(text: string): string {\n const shown = text.replace(/\\s+/g, ' ').trim();\n if (!shown) return 'Syntax error.';\n return `Unexpected “${shown.length > 32 ? `${shown.slice(0, 32)}…` : shown}”.`;\n}\n\n/** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()`, `nquads()` and `rdfPatch()`. */\nexport function parseErrorLinter(): Extension {\n return linter((view) => parseErrors(view.state).map((error) => ({ ...error, severity: 'error' })));\n}\n","import type { SyntaxNode } from '@lezer/common';\nimport type { EditorState } from '@codemirror/state';\nimport {\n LRLanguage,\n LanguageSupport,\n delimitedIndent,\n foldInside,\n foldNodeProp,\n indentNodeProp,\n syntaxTree,\n} from '@codemirror/language';\nimport type { LRParser } from '@lezer/lr';\nimport { parser as rawParser } from './turtle.grammar';\nimport { turtleHighlighting } from './highlight';\nimport { turtleCompletionSource } from './complete';\nimport type { CompletionOptions } from './complete';\nimport { parseErrorLinter } from './lint';\n\nexport type { CompletionOptions, PrefixMap, PrefixSource } from './complete';\nexport { documentPrefixes, knownPrefixes, turtleCompletionSource } from './complete';\nexport { turtleHighlighting } from './highlight';\nexport { parseErrorLinter, parseErrors } from './lint';\nexport type { ParseError } from './lint';\n\n/** The unconfigured grammar, for callers that want their own `top` or props. */\nexport const parser: LRParser = rawParser;\n\n/**\n * Fold a whole statement from the end of its first line.\n *\n * This is the one fold in Turtle with no brackets around it: a subject with a\n * long `;` list is the common shape a reader wants collapsed, and the structure\n * that shape has is a statement, not a delimiter.\n *\n * It stands aside when a bracket opens on the same line. Folding\n * `ex:s ex:p [` at the statement level would hide the `] .` as well, leaving\n * what is left looking unterminated; the bracket's own fold — which CodeMirror\n * would otherwise never reach, since the statement node encloses it — reads\n * correctly.\n */\nconst statementFold = (node: SyntaxNode, state: EditorState) => {\n const firstLineEnd = state.doc.lineAt(node.from).to;\n if (node.to <= firstLineEnd) return null;\n for (let n: SyntaxNode | null = syntaxTree(state).resolveInner(firstLineEnd, -1); n; n = n.parent) {\n if (n.from < node.from) break;\n if (n.type.prop(foldNodeProp) && n.from <= firstLineEnd && n.to > firstLineEnd && n.type !== node.type) return null;\n }\n return { from: firstLineEnd, to: node.to };\n};\n\n/**\n * Fold an RDF Patch transaction from the end of its `TX .` row to the start of\n * its `TC .` or `TA .` row, so both rows stay visible.\n */\nconst transactionFold = (node: SyntaxNode, state: EditorState) => {\n const begin = node.getChild('TxBegin');\n const end = node.getChild('TxCommit') ?? node.getChild('TxAbort');\n if (!begin || !end) return null;\n const from = state.doc.lineAt(begin.to).to;\n const to = state.doc.lineAt(end.from).from - 1;\n return to > from ? { from, to } : null;\n};\n\n/**\n * Highlighting, folding and indentation, shared by all five dialects.\n *\n * Exported so a consumer can re-configure the parser with props of their own —\n * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart\n * rather than all as `quote`. `codemirror-lang-sparql12` exports `sparqlProps`\n * for the same reason.\n */\nexport const turtleProps = [\n turtleHighlighting,\n indentNodeProp.add({\n BlankNodePropertyList: delimitedIndent({ closing: ']' }),\n Collection: delimitedIndent({ closing: ')' }),\n WrappedGraph: delimitedIndent({ closing: '}' }),\n AnnotationBlock: delimitedIndent({ closing: '|}' }),\n TripleTerm: delimitedIndent({ closing: ')>>' }),\n ReifiedTriple: delimitedIndent({ closing: '>>' }),\n }),\n foldNodeProp.add({\n Transaction: transactionFold,\n BlankNodePropertyList: foldInside,\n Collection: foldInside,\n WrappedGraph: foldInside,\n AnnotationBlock: foldInside,\n 'Triples Triples2 TriplesOrGraph': statementFold,\n }),\n];\n\nconst languageData = {\n commentTokens: { line: '#' },\n closeBrackets: { brackets: ['[', '(', '<', '\"', \"'\"] },\n indentOnInput: /^\\s*[\\]})]$/,\n};\n\nconst LANGUAGE_NAMES: Record<string, string> = {\n TurtleDoc: 'turtle',\n TrigDoc: 'trig',\n NTriplesDoc: 'ntriples',\n NQuadsDoc: 'nquads',\n RdfPatchDoc: 'rdfpatch',\n};\n\nfunction define(top: string) {\n return LRLanguage.define({\n name: LANGUAGE_NAMES[top],\n parser: rawParser.configure({ top, props: turtleProps }),\n languageData,\n });\n}\n\nexport const turtleLanguage = define('TurtleDoc');\nexport const trigLanguage = define('TrigDoc');\nexport const ntriplesLanguage = define('NTriplesDoc');\nexport const nquadsLanguage = define('NQuadsDoc');\nexport const rdfPatchLanguage = define('RdfPatchDoc');\n\nfunction support(language: LRLanguage, options: CompletionOptions, dialect: 'turtle' | 'trig') {\n return new LanguageSupport(language, [\n language.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),\n parseErrorLinter(),\n ]);\n}\n\n/** RDF 1.2 Turtle. */\nexport function turtle(options: CompletionOptions = {}): LanguageSupport {\n return support(turtleLanguage, options, 'turtle');\n}\n\n/** RDF 1.2 TriG. */\nexport function trig(options: CompletionOptions = {}): LanguageSupport {\n return support(trigLanguage, options, 'trig');\n}\n\n/**\n * RDF 1.2 N-Triples.\n *\n * A strict subset with its own entry point rather than Turtle in a lenient\n * mood: a prefixed name or a `;` list in an N-Triples document is an error, and\n * an editor that colours it as valid is lying about the file it will write.\n */\nexport function ntriples(): LanguageSupport {\n return new LanguageSupport(ntriplesLanguage, parseErrorLinter());\n}\n\n/** RDF 1.2 N-Quads. */\nexport function nquads(): LanguageSupport {\n return new LanguageSupport(nquadsLanguage, parseErrorLinter());\n}\n\n/**\n * RDF Patch (https://afs.github.io/rdf-delta/rdf-patch.html).\n *\n * Rows take N-Quads terms. `A` and `PA` rows are tagged `inserted`, and `D` and\n * `PD` rows `deleted`, so a style can show a patch as a diff. A transaction\n * folds between its `TX .` and `TC .` rows.\n */\nexport function rdfPatch(): LanguageSupport {\n return new LanguageSupport(rdfPatchLanguage, parseErrorLinter());\n}\n"],"names":["parser","LRParser","styleTags","t","syntaxTree","ensureSyntaxTree","linter","rawParser","foldNodeProp","indentNodeProp","delimitedIndent","foldInside","LRLanguage","language","LanguageSupport"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export type { ParseError } from './lint';
9
9
  /** The unconfigured grammar, for callers that want their own `top` or props. */
10
10
  export declare const parser: LRParser;
11
11
  /**
12
- * Highlighting, folding and indentation, shared by all four dialects.
12
+ * Highlighting, folding and indentation, shared by all five dialects.
13
13
  *
14
14
  * Exported so a consumer can re-configure the parser with props of their own —
15
15
  * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart
@@ -21,6 +21,7 @@ export declare const turtleLanguage: LRLanguage;
21
21
  export declare const trigLanguage: LRLanguage;
22
22
  export declare const ntriplesLanguage: LRLanguage;
23
23
  export declare const nquadsLanguage: LRLanguage;
24
+ export declare const rdfPatchLanguage: LRLanguage;
24
25
  /** RDF 1.2 Turtle. */
25
26
  export declare function turtle(options?: CompletionOptions): LanguageSupport;
26
27
  /** RDF 1.2 TriG. */
@@ -35,3 +36,11 @@ export declare function trig(options?: CompletionOptions): LanguageSupport;
35
36
  export declare function ntriples(): LanguageSupport;
36
37
  /** RDF 1.2 N-Quads. */
37
38
  export declare function nquads(): LanguageSupport;
39
+ /**
40
+ * RDF Patch (https://afs.github.io/rdf-delta/rdf-patch.html).
41
+ *
42
+ * Rows take N-Quads terms. `A` and `PA` rows are tagged `inserted`, and `D` and
43
+ * `PD` rows `deleted`, so a style can show a patch as a diff. A transaction
44
+ * folds between its `TX .` and `TC .` rows.
45
+ */
46
+ export declare function rdfPatch(): LanguageSupport;
package/dist/index.js CHANGED
@@ -4,23 +4,25 @@ import { styleTags, tags } from '@lezer/highlight';
4
4
  import { linter } from '@codemirror/lint';
5
5
 
6
6
  // This file was generated by lezer-generator. You probably shouldn't edit it.
7
+ const spec_patchWord = {__proto__:null,H:248, TX:252, PA:256, PD:260, A:262, D:266, TC:268, TA:270};
7
8
  const parser$1 = LRParser.deserialize({
8
9
  version: 14,
9
- states: "5fQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOOOQO'#Ce'#CeOOQO'#EX'#EXO!jQPO'#CaO!oQPO'#CgO!zQPO'#CiO!oQPO'#CkO#PQPO'#CmO#UQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$[QQO'#C{O$cQPO'#DOO$qQPO'#DbO$cQPO'#CqO%VQPO'#CqOOQO'#EW'#EWO%kQPO'#EWOOQO'#D{'#D{QYQPOOOOQO'#Dn'#DnO%pQPO'#DqO%}QPO'#DlO&`QPO'#DsO&qQPO'#DsO'SQPO'#DtO$cQPO'#DtOOQO'#Ea'#EaOOQO'#E`'#E`OOQO'#EQ'#EQQ!WQPOOOOQO'#Ec'#EcOOQO'#ER'#ERQ!bQPOOO!oQPO'#DvOOQO'#ES'#ESQ!bQPOOO!oQPO'#DyO!oQPO,58{O'eQPO,59RO!oQPO,59TOOQO,59V,59VOOQO,59X,59XO'jQPO,59XOOQO'#D|'#D|O'oQQO,59gOOQO,59g,59gO([QQO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#EZ'#EZO%}QPO'#D_OOQO'#EY'#EYOOQO'#Cs'#CsO)hQPO,59jO#ZQQO'#CrOOQO'#E^'#E^O$cQPO,59|OOQO,59],59]OOQO,5:r,5:rOOQO-E7y-E7yO)mQPO'#DrOOQO,5:],5:]O)uQPO,5:]O&lQPO,5:WOOQO,5:_,5:_O)zQPO,5:_OOQO,5:`,5:`O*PQPO,5:`OOQO-E8O-E8OOOQO-E8P-E8PO*UQQO,5:bOOQO-E8Q-E8QO*UQQO,5:eO*dQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E7z-E7zOOQO1G/R1G/RO!oQPO'#DSOOQO,59k,59kOOQO'#E['#E[O$cQPO,59yOOQO1G/U1G/UO*iQQO'#CuO*}QPO,59^O+YQQO1G/hO+sQSO'#DPO+}QSO'#CuO,cQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO,pQPO'#DPOOQO'#Eb'#EbO!bQPO'#DwO-[QPO1G/|O-aQPO1G0POOQO7+$R7+$ROOQO,59n,59nO-lQQO1G/eO.VQQO'#DcO$cQPO'#DhOOQO'#D}'#D}O.mQQO'#DeO#ZQQO'#EOO/RQPO,59aO/RQPO,59aO/rQPO'#EPO/|QPO1G.xOOQO'#E_'#E_O0XQPO7+%SO0aQSO'#DcO0wQSO'#DeOOQO1G/x1G/xO1]QPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO1bQPO7+%kOOQO'#E]'#E]O1gQPO7+%POOQO,59},59}O1lQPO,5:SOOQO-E7{-E7{O1qQQO,5:jOOQO-E7|-E7|O2VQPO1G.{O#ZQQO,5:kOOQO-E7}-E7}O2eQPO'#DcOOQO<<Hn<<HnO2lQPO<<HnO2qQSO,5:jO*UQQO1G/}OOQO<<IV<<IVOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0U1G0UOOQO1G0V1G0VOOQOAN>YAN>YO3VQPO7+%iOOQO<<IT<<ITO3[QQO'#CrO3[QQO'#EOO3{QPO,59aO3{QPO,59aO4ZQPO1G.{O3[QQO,5:kO4iQPO'#EPO4sQPO1G.xO5OQPO,59^",
10
- stateData: "5m~O!yOSPOS~OUUOVSOWTOYSO[VO^WO`XObYOdZOk]Ol]On^Oq_O!T`O~O!aiO!dhO~PYOWrOkrO~OVyO~OVSOWTOYSO~OV{O~Oc}O~Oc!OO~OVSOWTOYSOk]Ol]On^Oq_Ot!SOy!TOz!TO{!TO}!UO!O!UO!Q!WO!T`O~Om!RO~P#ZOVSOWTOYSOh!YO~OVSOWTOYSOk]Ol]O!T`O~OVSOWTOYSOh!YOSeX!ceX~OS!`O~On^Oq_O!c!cO~P$qOVSOWTOYSOk]Ol]O~OVSOWTOYSOh!YO!dhO~OS!fOVSOWTOYSOh!YO~OS!hOVSOWTOYSOh!YO~OS!pO~OS!rO~Om!tO~P#ZOu!vOw!uO!WsX!ZsX!]sX!^sX~OVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsXpsX!YsX~P'vOp!yO~OS#PO!c!fX~O!c#QO~OS#SO~OS#TO~OW#VOk#VOt#UO!Q#WO~OS#ZO~O!W#^O!Z#_O!]#bOpiX!^iX!YiX~O!^#eOpfa!Yfa~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qOSsX!csX~P'vO!W#iO!Z#_O!]$ZOSiX!^iX!ciX~On^Oq_O!c!fa~P$qOu!vOw!uOSsXWsXksX!SsX!WsX!PsX~OS#mO~OS#oOW#nOk#nO~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P%}Op!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P%}O!W#^O!Z#_Op!XX!]!XX!^!XX!Y!XX~O!]#bOpia!^ia!Yia~OVSOWTOYSOh!YO!^!sX~Op!sX!Y!sX~P/aO!^#eOpfi!Yfi~O!S#|O!W#{O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P%}O!W#iO!Z#_OS!XX!]!XX!^!XX!c!XX~OW$PO~OS$QO~O!P$RO~O!Y$SO~O!W#^O!Z#_Op!ra!]!ra!^!ra!Y!ra~O!]#bOpii!^ii!Yii~O!S!VX~P%}O!S$VO~O!W#iO!Z#_OS!ra!]!ra!^!ra!c!ra~O!P$XO~On^Oq_Ot!}Oy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qO!]$ZOSia!^ia!cia~O!]$ZOSii!^ii!cii~OS!sX!c!sX~P/aO!^$`OSfi!cfi~O!^$`OSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~",
11
- goto: ".z#WPPP#XP#aPPP#gP#aP#aP#aP#aPPP$d$l%OP%h%rPPPP&jPP'O'dPP'uP'zPPP'zPPPP(WPP(h)SP)_PP)iPPP)qP)uPP)|*W)q)qP*^'pP*b*f*i*o*u+R+e+o+u+{PPP,R,V-r(W.U.X.[._.b#].f.oScOfToPqX[OPfq!uTOPVX^_`abfhijklmquxy{!Q!W![!^!u!x!|#P#]#^#_#b#e#i#y#{$Y$Z$_$`SdOfT!bh#PQ!Z_S!_abS!gjkS!ilmR#t#_S![_#_Q!|!^Q#]!xQ#y#e[$YabjklmR$_$`Q!{![S$U#y$_R$b$YWaOfh#PUgPiq`!X^!Q![#b#y$Y$Z$_Q!]`Q!w!WQ#g!|Q#q#]V#s#^#i#{WaOfh#PSmPqa!X^!Q![#b#y$Y$Z$_WbOfh#PSlPqa!X^!Q![#b#y$Y$Z$_d!V^!Q![!|#]#b#y$Y$Z$_V#V!l!n$PV!v!S!}#Ue!V^!Q![!|#]#b#y$Y$Z$_`!X^!Q![#b#y$Y$Z$_Q#g!|R#q#]WbOfh#PSkPq`!X^!Q![#b#y$Y$Z$_Q!]`R#g!|[#`!z#O#a#j#v$OR#}#hQ#d!zS$T#v$OR$]#O]#`!z#O#a#j#v$OTnPqSjPqR!eiSnPqQ!fjR#R!eQ!dhR#k#PTsQtTvRwR#p#YQfOR!afQ!Q^R!s!QS#a!z#vS#j#O$OT#u#a#jQ#c!zW#w#c#x$[$^Q#x#dQ$[#OR$^$]Q#f!{S#z#f$aR$a$bQqPR!jqQtQR!ktQwRR!mwTeOfWaOfh#PUgPiqQzVQ|X`!X^!Q![#b#y$Y$Z$_h!Y_abjklm!^!x#_#e$`Q!]`Q!luQ!nxQ!oyQ!q{Q!w!WQ#[!uQ#g!|Q#q#]V#s#^#i#{S!P^!QS!z![#yS#O$Y$_Q#v#bR$O$ZR!x!WR#r#]R!^`R#h!|TpPqQ#X!lQ#Y!nR$W$PSuQtSxRwR#l#W",
12
- nodeNames: "⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel",
13
- maxTerm: 99,
10
+ states: "<UQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOQ!jQQOOOOQO'#Ce'#CeOOQO'#Eo'#EoO#OQPO'#CaO#TQPO'#CgO#`QPO'#CiO#TQPO'#CkO#eQPO'#CmO#jQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$pQSO'#C{O$wQPO'#DOO%VQPO'#DbO$wQPO'#CqO%kQPO'#CqOOQO'#En'#EnO&PQPO'#EnOOQO'#Ea'#EaQYQPOOOOQO'#Dn'#DnO&UQPO'#DqO&cQPO'#DlO&tQPO'#DsO'VQPO'#DsO'hQPO'#DtO$wQPO'#DtOOQO'#Ew'#EwOOQO'#Ev'#EvOOQO'#Ef'#EfQ!WQPOOOOQO'#Ey'#EyOOQO'#Eg'#EgQ!bQPOOO#TQPO'#DvOOQO'#Eh'#EhQ!bQPOOO#TQPO'#DyOOQO'#D}'#D}O'yQQO'#D|OOQO'#ER'#ERO(OQPO'#EQOOQO'#ET'#ETO(TQQO'#ESOOQO'#EW'#EWO(TQQO'#EVOOQO'#EY'#EYO!bQPO'#EXOOQO'#E['#E[O!bQPO'#EZOOQO'#FP'#FPO(]QQO'#EPOOQO'#Ez'#EzOOQO'#Ei'#EiQ!jQQOOO#TQPO,58{O(qQPO,59RO#TQPO,59TOOQO,59V,59VOOQO,59X,59XO(vQPO,59XOOQO'#Eb'#EbO({QSO,59gOOQO,59g,59gO)SQSO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#Eq'#EqO&cQPO'#D_OOQO'#Ep'#EpOOQO'#Cs'#CsO*^QPO,59jO*cQSO'#CrOOQO'#Et'#EtO$wQPO,59|OOQO,59],59]OOQO,5;Y,5;YOOQO-E8_-E8_O+SQPO'#DrOOQO,5:],5:]O+[QPO,5:]O'QQPO,5:WOOQO,5:_,5:_O+aQPO,5:_OOQO,5:`,5:`O+fQPO,5:`OOQO-E8d-E8dOOQO-E8e-E8eO+kQQO,5:bOOQO-E8f-E8fO+kQQO,5:eOOQO'#EO'#EOO+yQQO,5:hOOQO,5:l,5:lOOQO'#EU'#EUOOQO'#FR'#FRO,UQPO,5:nO,ZQPO,5:qO,`QPO,5:sO,eQPO'#FUO,jQPO,5:uOOQO'#Ej'#EjO(]QQO,5:kOOQO'#E^'#E^O,oQPO'#E]OOQO'#E`'#E`O,tQPO'#E_OOQO,5:k,5:kOOQO-E8g-E8gO,yQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E8`-E8`OOQO1G/R1G/RO#TQPO'#DSOOQO,59k,59kOOQO'#Er'#ErO$wQPO,59yOOQO1G/U1G/UO-OQQO'#DPO-pQQO'#CuO.UQPO,59^O.aQSO1G/hO.zQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO/XQPO'#DPOOQO'#Ex'#ExO!bQPO'#DwO/sQPO1G/|O/xQPO1G0POOQO'#E}'#E}O0TQPO1G0SO0YQPO1G0YOOQO1G0]1G0]OOQO1G0_1G0_O+kQQO,5;pOOQO1G0a1G0aOOQO-E8h-E8hOOQO1G0V1G0VOOQO,5:w,5:wOOQO,5:y,5:yOOQO7+$R7+$ROOQO,59n,59nO0_QSO1G/eO0xQSO'#DcO$wQPO'#DhOOQO'#Ec'#EcO1`QQO'#DeO*cQSO'#EdO1tQPO,59aO1tQPO,59aO2eQPO'#EeO2oQPO1G.xOOQO'#Eu'#EuO2zQPO7+%SO3SQWO'#DcOOQO1G/x1G/xO3jQPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO3oQPO7+%kOOQO7+%n7+%nOOQO7+%t7+%tO3tQPO1G1[OOQO'#Es'#EsO4PQPO7+%POOQO,59},59}O4UQPO,5:SOOQO-E8a-E8aO4ZQQO,5;OOOQO-E8b-E8bO4oQPO1G.{O*cQSO,5;POOQO-E8c-E8cO4}QPO'#DcOOQO<<Hn<<HnO5UQPO<<HnO+kQQO1G/}OOQO<<IV<<IVOOQO7+&v7+&vOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0j1G0jOOQO1G0k1G0kOOQOAN>YAN>YO5ZQPO7+%iOOQO<<IT<<ITO5`QQO'#CuO5tQQO'#DeO6YQQO,5;OO*cQSO,5;PO*cQSO'#CrO*cQSO'#EdO6nQPO,59aO6nQPO,59aO6|QPO'#EeO7WQPO1G.xO7cQPO1G.{O7qQPO,59^",
11
+ stateData: "8`~O#aOSPOS~OUVOVTOWUOYTO[WO^XO`YObZOd[Ok^Ol^On_Oq`O!TaO~O!ajO!diO~PYOWsOksO~O#pzO#r|O#t!OO#v!QO#w!SO#y!UO~OV!]O~OVTOWUOYTO~OV!_O~Oc!aO~Oc!bO~OVTOWUOYTOk^Ol^On_Oq`Ot!fOy!gOz!gO{!gO}!hO!O!hO!Q!jO!TaO~Om!eO~P#oOVTOWUOYTOh!lO~OVTOWUOYTOk^Ol^O!TaO~OVTOWUOYTOh!lOSeX!ceX~OS!rO~On_Oq`O!c!uO~P%VOVTOWUOYTOk^Ol^O~OVTOWUOYTOh!lO!diO~OS!xOVTOWUOYTOh!lO~OS!zOVTOWUOYTOh!lO~O#o#RO~OS#TO~Ot#VO#o#UO~O#t!OO#v!QO#w!SO#y!UO#z#_O#{#aO~OS#fO~OS#hO~Om#jO~P#oOu#lOw#kOVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsX~Op#oO~On_Oq`Ot#pOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOS#tO!c!fX~O!c#uO~OS#wO~OS#xO~OW#zOk#zOt#yO!Q#{O~OW$OOk$OOt#yO~OW$QO~OS$RO~OS$SO~OW$TO~OS$UO~OS$XO~OS$YO~OS$ZO~Ou#lOw#kOpsX!WsX!ZsX!]sX!^sXSsX!csX!YsX~O!W$^O!Z$_O!]$bOpiX!^iX!YiX~O!^$eOpfa!Yfa~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOn_Oq`O!c!fa~P%VOu#lOw#kOSsXWsXksX!SsX!WsX!PsX~OS$lO~OS$nOW$mOk$mO~OS$pO~OS$qO~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P&cOp!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P&cO!W$^O!Z$_Op!XX!]!XX!^!XX!Y!XX~O!]$bOpia!^ia!Yia~OVTOWUOYTOh!lO!^#XX~Op#XX!Y#XX~P2SO!^$eOpfi!Yfi~O!S%OO!W$}O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P&cOW%QO~OS%RO~OW$mOk$mOS#xi~O!P%TO~O!Y%UO~O!W$^O!Z$_Op#Wa!]#Wa!^#Wa!Y#Wa~O!]$bOpii!^ii!Yii~O!S!VX~P&cO!S%XO~O!P%ZO~O!W$iO!Z$_O!]%aOSiX!^iX!ciX~O!W$iO!Z$_OS!XX!]!XX!^!XX!c!XX~O!W$iO!Z$_OS#Wa!]#Wa!^#Wa!c#Wa~O!]%aOSia!^ia!cia~OS#XX!c#XX~P2SO!^%dOSfi!cfi~O!]%aOSii!^ii!cii~O!^%dOSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~",
12
+ goto: "2a#yPPP#zP$SPPP$YP$SP$SP$SP$SPPP%V%_%qP&Z&ePPPP']PP'q(VPP(lP(qPPP(qPPPP(}PP)_)yP*UPP*`PPP*hP*lPP*s*}*h*hP+T+XP+_+cP+i+m+q+i+t+x+|,S,Y+|,^+|,d+|,j,p,v,p,z-O-U-[-h-z.U.[.b.h.nPPP.t.x0e(}0w0z0}1Q1T$O1X1e1tPP1xP1{P2TPP2ZSdOgTpPrX]OPgr!uUOPWY_`abcgijklmnrvy!]!_!d!j!n!p#k#n#s#t$]$^$_$b$e$i${$}%_%`%a%dSeOgT!ti#tQ!m`S!qbcS!yklS!{mnR$v$_S!n`$_Q#s!pQ$]#nQ${$eQ%_%d]%`bcklmnQ#r!nS%W${%_R%g%`WbOgi#tUhPjr`!k_!d!n$b${%_%`%aQ!oaQ#m!jQ$g#sQ$s$]V$u$^$i$}WbOgi#tSnPra!k_!d!n$b${%_%`%aWcOgi#tSmPra!k_!d!n$b${%_%`%ad!i_!d!n#s$]$b${%_%`%aW#z#O#Q$T%QR$O#SV#l!f#p#ye!i_!d!n#s$]$b${%_%`%a`!k_!d!n$b${%_%`%aQ$g#sR$s$]WcOgi#tSlPr`!k_!d!n$b${%_%`%aQ!oaR$g#s[$`#q$a$x%[%]%^R%P$hQ$d#qS%V$x%^R%c%[]$`#q$a$x%[%]%^ToPrSkPrR!wjSoPrQ!xkR#v!wQ!viR$j#tTtQuX#z#O#Q$T%QTwRxQ$o#}R%S$rT!YS![T{S![R#S{T!XS![T}S![X!WS!X![#^X!PS!X![#^T#V!P!RX!RS!X![#^X!TS!X![#^X!VS!X![#^Q#c!XR$W#^T#`!X#^T#b!X#^QgOR!sgQ!d_R#i!dS$a#q$xS$w$a%]T%]%[%^Q$c#qW$y$c$z%b%fQ$z$dQ%b%[R%f%cQ$f#rS$|$f%eR%e%gQrPR!|rQuQR!}uQxRR#PxQ![SR#d![Q#^!XR$V#^TfOgWbOgi#tUhPjrQ!^WQ!`Y`!k_!d!n$b${%_%`%ah!l`bcklmn!p#n$_$e%dQ!oaQ#OvQ#QyQ#e!]Q#g!_Q#m!jQ$[#kQ$g#sQ$s$]V$u$^$i$}S!c_!dS#q!n${Q$x$bS%[%_%`R%^%aR#n!jR$t$]R!paR$h#sTqPrQ#|#OQ#}#QQ$r$TR%Y%QSvQuSyRxS#Z!T!VR$k#{T!ZS![R$P#SS!YS![T#]!X#^Q#W!PR#X!RQ#Y!TR#[!V",
13
+ nodeNames: "⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel RdfPatchDoc Header KwH HeaderKey Transaction TxBegin KwTX PrefixAdd KwPA PatchPrefix PrefixDelete KwPD QuadAdd KwA QuadDelete KwD TxCommit KwTC TxAbort KwTA",
14
+ maxTerm: 135,
14
15
  nodeProps: [
15
16
  ["openedBy", 29,"(",32,"[",47,"<<(",50,"<<",56,"{|",65,"{"],
16
17
  ["closedBy", 30,")",33,"]",48,")>>",51,">>",57,"|}",66,"}"]
17
18
  ],
18
19
  skippedNodes: [0,1],
19
- repeatNodeCount: 8,
20
- tokenData: "#-Z~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! s!e!iL|!i!j!(X!j!rL|!r!s!0_!s!xL|!x!y!:]!y!}L|!}#O!E{#P#Q!Fx#Q#R!F}#R#S!GY#T#U!KW#U#V! s#V#YL|#Y#Z!Ln#Z#[!(X#[#dL|#d#e!0_#e#hL|#h#i#&_#i#jL|#j#k!:]#k#oL|#o#p#,g#p#q#,t#q#r#-P#r#s#-U%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS!y~XY$zYZ$z]^$zpq$zR%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&rOtQcPR&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gR'hR!Q!['q!c!i'q#T#Z'qR'tR!Q!['}!c!i'}#T#Z'}R(QR!Q![(Z!c!i(Z#T#Z(ZR(^R!Q![(g!c!i(g#T#Z(gR(jR!Q![(s!c!i(s#T#Z(sR(vR!Q![)P!c!i)P#T#Z)PR)SR!Q![)]!c!i)]#T#Z)]R)`R!Q![%{!c!i%{#T#Z%{R)lP;=`<%l%{R)vPtQcPrs)yQ)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yQ*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yQ*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yQ+^OtQQ+aP;=`<%l)yQ+gRO;'S)y;'S;=`+p;=`O)yQ+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]R,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zR.{R!Q![/U!c!i/U#T#Z/UR/XR!Q![/b!c!i/b#T#Z/bR/eR!Q![/n!c!i/n#T#Z/nR/qR!Q![/z!c!i/z#T#Z/zR/}R!Q![0W!c!i0W#T#Z0WR0ZR!Q![0d!c!i0d#T#Z0dR0gR!Q![0p!c!i0p#T#Z0pR0sR!Q![-g!c!i-g#T#Z-gR1PP;=`<%l-gR1ZPtQcPwx1^Q1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^Q1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^Q2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^Q2oP;=`<%l1^Q2uRO;'S1^;'S;=`3O;=`O1^Q3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~R3uPmQ!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^Q4aP!Q![4dQ4iRzQ!Q![4d!g!h4r#X#Y4rQ4uR{|5O}!O5O!Q![5UQ5RP!Q![5UQ5ZP{Q!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rQ5rR!Q![4d!g!h4r#X#Y4r~6QO!]~V6VPST!Q![4d~6_bV~uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~7jR!Q![7s!c!i7s#T#Z7s~7vR!Q![8P!c!i8P#T#Z8P~8UgY~uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~;[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq~MPe}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~Ned}!OL|!O!PNb!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~! vg}!OL|!O!PNb!Q![L|![!]6Y!c!d!#_!d!}L|#R#SL|#T#U!#_#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!#bi}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!%P!v!}L|#R#SL|#T#gL|#g#h!%P#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!%Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!&q!h!}L|#R#SL|#T#XL|#X#Y!&q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!&ve`~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!([i}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!)y!u!}L|#R#SL|#T#fL|#f#g!)y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!)|g}!OL|!O!PNb!Q![L|![!]6Y!c!d!+e!d!}L|#R#SL|#T#U!+e#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!+hi}!OL|!O!PNb!Q![L|![!]6Y!c!rL|!r!s!-V!s!}L|#R#SL|#T#dL|#d#e!-V#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!-Yi}!OL|!O!PNb!Q![L|![!]6Y!c!jL|!j!k!.w!k!}L|#R#SL|#T#[L|#[#]!.w#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!.|e!a~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!0bi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!2P!u!}L|#R#SL|#T#fL|#f#g!2P#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!2Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!3q!h!}L|#R#SL|#T#XL|#X#Y!3q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!3ti}!OL|!O!PNb!Q![L|![!]6Y!c!hL|!h!i!5c!i!}L|#R#SL|#T#YL|#Y#Z!5c#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!5fi}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!7T!l!}L|#R#SL|#T#]L|#]#^!7T#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!7Wi}!OL|!O!PNb!Q![L|![!]6Y!c!zL|!z!{!8u!{!}L|#R#SL|#T#lL|#l#m!8u#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!8ze^~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!:`i}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!;}!h!}L|#R#SL|#T#XL|#X#Y!;}#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!<Qi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!=o!u!}L|#R#SL|#T#fL|#f#g!=o#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!=ri}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!?a!v!}L|#R#SL|#T#gL|#g#h!?a#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!?di}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!AR!l!}L|#R#SL|#T#]L|#]#^!AR#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!AUi}!OL|!O!PNb!Q![L|![!]6Y!c!qL|!q!r!Bs!r!}L|#R#SL|#T#cL|#c#d!Bs#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Bvi}!OL|!O!PNb!Q![L|![!]6Y!c!pL|!p!q!De!q!}L|#R#SL|#T#bL|#b#c!De#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Djeb~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!FQTq~XY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FdTXY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FxOl~~!F}Op~~!GQP#Q#R!GT~!GYOw~~!G]P![!]!G`~!Gc_!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb%W%o!Hb%p&a!Hb&b1p!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Hgdk~}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Ixd}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!K]eh~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Lqf}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#U!NV#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!NYg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a# q#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~# tg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h##]#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~##`g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#$w#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#$|e!O~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#&bg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#'y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#'|g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#)e#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#)hg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#+P#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#+Ue}~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|V#,lP!dP#p#q#,oU#,tO!ZU~#,wP#q#r#,z~#-PO!Y~~#-UO!c~~#-ZO!W~",
21
- tokenizers: [0, 1, 2],
22
- topRules: {"TurtleDoc":[0,2],"TrigDoc":[1,61],"NTriplesDoc":[2,71],"NQuadsDoc":[3,74]},
23
- tokenPrec: 931
20
+ repeatNodeCount: 10,
21
+ tokenData: "#.o~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! u!e!iL|!i!j!(c!j!rL|!r!s!0s!s!xL|!x!y!:}!y!}L|!}#O!F{#P#Q!Gx#Q#R!G}#R#S!HY#T#U!LW#U#V! u#V#YL|#Y#Z!Mp#Z#[!(c#[#dL|#d#e!0s#e#hL|#h#i#'k#i#jL|#j#k!:}#k#oL|#o#p#-{#p#q#.Y#q#r#.e#r#s#.j%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS#a~XY$zYZ$z]^$zpq$zV%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&rOtUcPV&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gV'hR!Q!['q!c!i'q#T#Z'qV'tR!Q!['}!c!i'}#T#Z'}V(QR!Q![(Z!c!i(Z#T#Z(ZV(^R!Q![(g!c!i(g#T#Z(gV(jR!Q![(s!c!i(s#T#Z(sV(vR!Q![)P!c!i)P#T#Z)PV)SR!Q![)]!c!i)]#T#Z)]V)`R!Q![%{!c!i%{#T#Z%{V)lP;=`<%l%{V)vPtUcPrs)yU)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yU*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yU*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yU+^OtUU+aP;=`<%l)yU+gRO;'S)y;'S;=`+p;=`O)yU+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]V,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zV.{R!Q![/U!c!i/U#T#Z/UV/XR!Q![/b!c!i/b#T#Z/bV/eR!Q![/n!c!i/n#T#Z/nV/qR!Q![/z!c!i/z#T#Z/zV/}R!Q![0W!c!i0W#T#Z0WV0ZR!Q![0d!c!i0d#T#Z0dV0gR!Q![0p!c!i0p#T#Z0pV0sR!Q![-g!c!i-g#T#Z-gV1PP;=`<%l-gV1ZPtUcPwx1^U1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^U1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^U2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^U2oP;=`<%l1^U2uRO;'S1^;'S;=`3O;=`O1^U3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~T3uPmS!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^S4aP!Q![4dS4iRzS!Q![4d!g!h4r#X#Y4rS4uR{|5O}!O5O!Q![5US5RP!Q![5US5ZP{S!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rS5rR!Q![4d!g!h4r#X#Y4r~6QO!]~_6VPSZ!Q![4d]6_bV]uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]7jR!Q![7s!c!i7s#T#Z7s]7vR!Q![8P!c!i8P#T#Z8P]8UgY]uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P];[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq_MRe#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_Ngd}!OL|!O!PNd!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_! zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!#c!d!}L|#R#SL|#T#U!#c#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!#hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!%V!v!}L|#R#SL|#T#gL|#g#h!%V#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!%[i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!&y!h!}L|#R#SL|#T#XL|#X#Y!&y#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!'Qe#oQ`P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!(hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!*V!u!}L|#R#SL|#T#fL|#f#g!*V#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!*[g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!+s!d!}L|#R#SL|#T#U!+s#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!+xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!rL|!r!s!-g!s!}L|#R#SL|#T#dL|#d#e!-g#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!-li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!jL|!j!k!/Z!k!}L|#R#SL|#T#[L|#[#]!/Z#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!/be#oQ!aP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!0xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!2g!u!}L|#R#SL|#T#fL|#f#g!2g#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!2li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!4Z!h!}L|#R#SL|#T#XL|#X#Y!4Z#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!4`i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!hL|!h!i!5}!i!}L|#R#SL|#T#YL|#Y#Z!5}#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!6Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!7q!l!}L|#R#SL|#T#]L|#]#^!7q#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!7vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!zL|!z!{!9e!{!}L|#R#SL|#T#lL|#l#m!9e#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!9le#oQ^P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!;Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!<q!h!}L|#R#SL|#T#XL|#X#Y!<q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!<vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!>e!u!}L|#R#SL|#T#fL|#f#g!>e#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!>ji#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!@X!v!}L|#R#SL|#T#gL|#g#h!@X#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!@^i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!A{!l!}L|#R#SL|#T#]L|#]#^!A{#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!BQi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!qL|!q!r!Co!r!}L|#R#SL|#T#cL|#c#d!Co#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Cti#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!pL|!p!q!Ec!q!}L|#R#SL|#T#bL|#b#c!Ec#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Eje#oQbP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!GQTq~XY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GdTXY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GxOl~~!G}Op~~!HQP#Q#R!HT~!HYOw~~!H]P![!]!H`~!Hc_!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib%W%o!Ib%p&a!Ib&b1p!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Igdk~}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Jxd}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib_!L_e#oQhP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Muf#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#U# Z#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_# `g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a#!w#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#!|g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h#$e#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#$jg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#&R#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#&Ye#oQ!OS}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#'pg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#)X#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#)^g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#*u#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#*zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#,c#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#,je#oQ}S}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#.QP!dP#p#q#.T^#.YO!Z^~#.]P#q#r#.`~#.eO!Y~~#.jO!c~~#.oO!W~",
22
+ tokenizers: [0, 1, 2, 3],
23
+ topRules: {"TurtleDoc":[0,2],"TrigDoc":[1,61],"NTriplesDoc":[2,71],"NQuadsDoc":[3,74],"RdfPatchDoc":[4,77]},
24
+ specialized: [{term: 123, get: (value) => spec_patchWord[value] || -1}],
25
+ tokenPrec: 1056
24
26
  });
25
27
 
26
28
  const turtleHighlighting = styleTags({
@@ -68,6 +70,17 @@ const turtleHighlighting = styleTags({
68
70
  // The reifier marker only ever introduces a reifier, so it is worth telling
69
71
  // from arithmetic; it falls back to `operator`.
70
72
  '"~"': tags.special(tags.operator),
73
+ /*
74
+ * RDF Patch. The op codes are keywords. Every token of an `A` or `PA` row also
75
+ * carries `inserted`, and every token of a `D` or `PD` row carries `deleted`,
76
+ * in the same way as `quote` above: a style can colour a patch as a diff, and
77
+ * a style without those tags sees no change.
78
+ */
79
+ "KwH KwTX KwTC KwTA KwPA KwPD KwA KwD": tags.keyword,
80
+ HeaderKey: tags.attributeName,
81
+ PatchPrefix: tags.namespace,
82
+ "QuadAdd/... PrefixAdd/...": tags.inserted,
83
+ "QuadDelete/... PrefixDelete/...": tags.deleted,
71
84
  '";" ","': tags.separator,
72
85
  '"."': tags.punctuation
73
86
  });
@@ -191,6 +204,14 @@ const statementFold = (node, state) => {
191
204
  }
192
205
  return { from: firstLineEnd, to: node.to };
193
206
  };
207
+ const transactionFold = (node, state) => {
208
+ const begin = node.getChild("TxBegin");
209
+ const end = node.getChild("TxCommit") ?? node.getChild("TxAbort");
210
+ if (!begin || !end) return null;
211
+ const from = state.doc.lineAt(begin.to).to;
212
+ const to = state.doc.lineAt(end.from).from - 1;
213
+ return to > from ? { from, to } : null;
214
+ };
194
215
  const turtleProps = [
195
216
  turtleHighlighting,
196
217
  indentNodeProp.add({
@@ -202,6 +223,7 @@ const turtleProps = [
202
223
  ReifiedTriple: delimitedIndent({ closing: ">>" })
203
224
  }),
204
225
  foldNodeProp.add({
226
+ Transaction: transactionFold,
205
227
  BlankNodePropertyList: foldInside,
206
228
  Collection: foldInside,
207
229
  WrappedGraph: foldInside,
@@ -214,9 +236,16 @@ const languageData = {
214
236
  closeBrackets: { brackets: ["[", "(", "<", '"', "'"] },
215
237
  indentOnInput: /^\s*[\]})]$/
216
238
  };
239
+ const LANGUAGE_NAMES = {
240
+ TurtleDoc: "turtle",
241
+ TrigDoc: "trig",
242
+ NTriplesDoc: "ntriples",
243
+ NQuadsDoc: "nquads",
244
+ RdfPatchDoc: "rdfpatch"
245
+ };
217
246
  function define(top) {
218
247
  return LRLanguage.define({
219
- name: top === "TurtleDoc" ? "turtle" : top === "TrigDoc" ? "trig" : top === "NTriplesDoc" ? "ntriples" : "nquads",
248
+ name: LANGUAGE_NAMES[top],
220
249
  parser: parser$1.configure({ top, props: turtleProps }),
221
250
  languageData
222
251
  });
@@ -225,6 +254,7 @@ const turtleLanguage = define("TurtleDoc");
225
254
  const trigLanguage = define("TrigDoc");
226
255
  const ntriplesLanguage = define("NTriplesDoc");
227
256
  const nquadsLanguage = define("NQuadsDoc");
257
+ const rdfPatchLanguage = define("RdfPatchDoc");
228
258
  function support(language, options, dialect) {
229
259
  return new LanguageSupport(language, [
230
260
  language.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),
@@ -243,6 +273,9 @@ function ntriples() {
243
273
  function nquads() {
244
274
  return new LanguageSupport(nquadsLanguage, parseErrorLinter());
245
275
  }
276
+ function rdfPatch() {
277
+ return new LanguageSupport(rdfPatchLanguage, parseErrorLinter());
278
+ }
246
279
 
247
- export { documentPrefixes, knownPrefixes, nquads, nquadsLanguage, ntriples, ntriplesLanguage, parseErrorLinter, parseErrors, parser, trig, trigLanguage, turtle, turtleCompletionSource, turtleHighlighting, turtleLanguage, turtleProps };
280
+ export { documentPrefixes, knownPrefixes, nquads, nquadsLanguage, ntriples, ntriplesLanguage, parseErrorLinter, parseErrors, parser, rdfPatch, rdfPatchLanguage, trig, trigLanguage, turtle, turtleCompletionSource, turtleHighlighting, turtleLanguage, turtleProps };
248
281
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/turtle.grammar","../src/highlight.ts","../src/complete.ts","../src/lint.ts","../src/index.ts"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"5fQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOOOQO'#Ce'#CeOOQO'#EX'#EXO!jQPO'#CaO!oQPO'#CgO!zQPO'#CiO!oQPO'#CkO#PQPO'#CmO#UQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$[QQO'#C{O$cQPO'#DOO$qQPO'#DbO$cQPO'#CqO%VQPO'#CqOOQO'#EW'#EWO%kQPO'#EWOOQO'#D{'#D{QYQPOOOOQO'#Dn'#DnO%pQPO'#DqO%}QPO'#DlO&`QPO'#DsO&qQPO'#DsO'SQPO'#DtO$cQPO'#DtOOQO'#Ea'#EaOOQO'#E`'#E`OOQO'#EQ'#EQQ!WQPOOOOQO'#Ec'#EcOOQO'#ER'#ERQ!bQPOOO!oQPO'#DvOOQO'#ES'#ESQ!bQPOOO!oQPO'#DyO!oQPO,58{O'eQPO,59RO!oQPO,59TOOQO,59V,59VOOQO,59X,59XO'jQPO,59XOOQO'#D|'#D|O'oQQO,59gOOQO,59g,59gO([QQO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#EZ'#EZO%}QPO'#D_OOQO'#EY'#EYOOQO'#Cs'#CsO)hQPO,59jO#ZQQO'#CrOOQO'#E^'#E^O$cQPO,59|OOQO,59],59]OOQO,5:r,5:rOOQO-E7y-E7yO)mQPO'#DrOOQO,5:],5:]O)uQPO,5:]O&lQPO,5:WOOQO,5:_,5:_O)zQPO,5:_OOQO,5:`,5:`O*PQPO,5:`OOQO-E8O-E8OOOQO-E8P-E8PO*UQQO,5:bOOQO-E8Q-E8QO*UQQO,5:eO*dQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E7z-E7zOOQO1G/R1G/RO!oQPO'#DSOOQO,59k,59kOOQO'#E['#E[O$cQPO,59yOOQO1G/U1G/UO*iQQO'#CuO*}QPO,59^O+YQQO1G/hO+sQSO'#DPO+}QSO'#CuO,cQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO,pQPO'#DPOOQO'#Eb'#EbO!bQPO'#DwO-[QPO1G/|O-aQPO1G0POOQO7+$R7+$ROOQO,59n,59nO-lQQO1G/eO.VQQO'#DcO$cQPO'#DhOOQO'#D}'#D}O.mQQO'#DeO#ZQQO'#EOO/RQPO,59aO/RQPO,59aO/rQPO'#EPO/|QPO1G.xOOQO'#E_'#E_O0XQPO7+%SO0aQSO'#DcO0wQSO'#DeOOQO1G/x1G/xO1]QPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO1bQPO7+%kOOQO'#E]'#E]O1gQPO7+%POOQO,59},59}O1lQPO,5:SOOQO-E7{-E7{O1qQQO,5:jOOQO-E7|-E7|O2VQPO1G.{O#ZQQO,5:kOOQO-E7}-E7}O2eQPO'#DcOOQO<<Hn<<HnO2lQPO<<HnO2qQSO,5:jO*UQQO1G/}OOQO<<IV<<IVOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0U1G0UOOQO1G0V1G0VOOQOAN>YAN>YO3VQPO7+%iOOQO<<IT<<ITO3[QQO'#CrO3[QQO'#EOO3{QPO,59aO3{QPO,59aO4ZQPO1G.{O3[QQO,5:kO4iQPO'#EPO4sQPO1G.xO5OQPO,59^\",\n stateData: \"5m~O!yOSPOS~OUUOVSOWTOYSO[VO^WO`XObYOdZOk]Ol]On^Oq_O!T`O~O!aiO!dhO~PYOWrOkrO~OVyO~OVSOWTOYSO~OV{O~Oc}O~Oc!OO~OVSOWTOYSOk]Ol]On^Oq_Ot!SOy!TOz!TO{!TO}!UO!O!UO!Q!WO!T`O~Om!RO~P#ZOVSOWTOYSOh!YO~OVSOWTOYSOk]Ol]O!T`O~OVSOWTOYSOh!YOSeX!ceX~OS!`O~On^Oq_O!c!cO~P$qOVSOWTOYSOk]Ol]O~OVSOWTOYSOh!YO!dhO~OS!fOVSOWTOYSOh!YO~OS!hOVSOWTOYSOh!YO~OS!pO~OS!rO~Om!tO~P#ZOu!vOw!uO!WsX!ZsX!]sX!^sX~OVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsXpsX!YsX~P'vOp!yO~OS#PO!c!fX~O!c#QO~OS#SO~OS#TO~OW#VOk#VOt#UO!Q#WO~OS#ZO~O!W#^O!Z#_O!]#bOpiX!^iX!YiX~O!^#eOpfa!Yfa~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qOSsX!csX~P'vO!W#iO!Z#_O!]$ZOSiX!^iX!ciX~On^Oq_O!c!fa~P$qOu!vOw!uOSsXWsXksX!SsX!WsX!PsX~OS#mO~OS#oOW#nOk#nO~Ot#UOy!TOz!TO{!TO}!UO!O!UO!Q!WO~P%}Op!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P%}O!W#^O!Z#_Op!XX!]!XX!^!XX!Y!XX~O!]#bOpia!^ia!Yia~OVSOWTOYSOh!YO!^!sX~Op!sX!Y!sX~P/aO!^#eOpfi!Yfi~O!S#|O!W#{O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P%}O!W#iO!Z#_OS!XX!]!XX!^!XX!c!XX~OW$PO~OS$QO~O!P$RO~O!Y$SO~O!W#^O!Z#_Op!ra!]!ra!^!ra!Y!ra~O!]#bOpii!^ii!Yii~O!S!VX~P%}O!S$VO~O!W#iO!Z#_OS!ra!]!ra!^!ra!c!ra~O!P$XO~On^Oq_Ot!}Oy!TOz!TO{!TO}!UO!O!UO!Q!WO~P$qO!]$ZOSia!^ia!cia~O!]$ZOSii!^ii!cii~OS!sX!c!sX~P/aO!^$`OSfi!cfi~O!^$`OSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~\",\n goto: \".z#WPPP#XP#aPPP#gP#aP#aP#aP#aPPP$d$l%OP%h%rPPPP&jPP'O'dPP'uP'zPPP'zPPPP(WPP(h)SP)_PP)iPPP)qP)uPP)|*W)q)qP*^'pP*b*f*i*o*u+R+e+o+u+{PPP,R,V-r(W.U.X.[._.b#].f.oScOfToPqX[OPfq!uTOPVX^_`abfhijklmquxy{!Q!W![!^!u!x!|#P#]#^#_#b#e#i#y#{$Y$Z$_$`SdOfT!bh#PQ!Z_S!_abS!gjkS!ilmR#t#_S![_#_Q!|!^Q#]!xQ#y#e[$YabjklmR$_$`Q!{![S$U#y$_R$b$YWaOfh#PUgPiq`!X^!Q![#b#y$Y$Z$_Q!]`Q!w!WQ#g!|Q#q#]V#s#^#i#{WaOfh#PSmPqa!X^!Q![#b#y$Y$Z$_WbOfh#PSlPqa!X^!Q![#b#y$Y$Z$_d!V^!Q![!|#]#b#y$Y$Z$_V#V!l!n$PV!v!S!}#Ue!V^!Q![!|#]#b#y$Y$Z$_`!X^!Q![#b#y$Y$Z$_Q#g!|R#q#]WbOfh#PSkPq`!X^!Q![#b#y$Y$Z$_Q!]`R#g!|[#`!z#O#a#j#v$OR#}#hQ#d!zS$T#v$OR$]#O]#`!z#O#a#j#v$OTnPqSjPqR!eiSnPqQ!fjR#R!eQ!dhR#k#PTsQtTvRwR#p#YQfOR!afQ!Q^R!s!QS#a!z#vS#j#O$OT#u#a#jQ#c!zW#w#c#x$[$^Q#x#dQ$[#OR$^$]Q#f!{S#z#f$aR$a$bQqPR!jqQtQR!ktQwRR!mwTeOfWaOfh#PUgPiqQzVQ|X`!X^!Q![#b#y$Y$Z$_h!Y_abjklm!^!x#_#e$`Q!]`Q!luQ!nxQ!oyQ!q{Q!w!WQ#[!uQ#g!|Q#q#]V#s#^#i#{S!P^!QS!z![#yS#O$Y$_Q#v#bR$O$ZR!x!WR#r#]R!^`R#h!|TpPqQ#X!lQ#Y!nR$W$PSuQtSxRwR#l#W\",\n nodeNames: \"⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel\",\n maxTerm: 99,\n nodeProps: [\n [\"openedBy\", 29,\"(\",32,\"[\",47,\"<<(\",50,\"<<\",56,\"{|\",65,\"{\"],\n [\"closedBy\", 30,\")\",33,\"]\",48,\")>>\",51,\">>\",57,\"|}\",66,\"}\"]\n ],\n skippedNodes: [0,1],\n repeatNodeCount: 8,\n tokenData: \"#-Z~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! s!e!iL|!i!j!(X!j!rL|!r!s!0_!s!xL|!x!y!:]!y!}L|!}#O!E{#P#Q!Fx#Q#R!F}#R#S!GY#T#U!KW#U#V! s#V#YL|#Y#Z!Ln#Z#[!(X#[#dL|#d#e!0_#e#hL|#h#i#&_#i#jL|#j#k!:]#k#oL|#o#p#,g#p#q#,t#q#r#-P#r#s#-U%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS!y~XY$zYZ$z]^$zpq$zR%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{R&rOtQcPR&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gR'hR!Q!['q!c!i'q#T#Z'qR'tR!Q!['}!c!i'}#T#Z'}R(QR!Q![(Z!c!i(Z#T#Z(ZR(^R!Q![(g!c!i(g#T#Z(gR(jR!Q![(s!c!i(s#T#Z(sR(vR!Q![)P!c!i)P#T#Z)PR)SR!Q![)]!c!i)]#T#Z)]R)`R!Q![%{!c!i%{#T#Z%{R)lP;=`<%l%{R)vPtQcPrs)yQ)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yQ*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yQ*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yQ+^OtQQ+aP;=`<%l)yQ+gRO;'S)y;'S;=`+p;=`O)yQ+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]R,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gR.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zR.{R!Q![/U!c!i/U#T#Z/UR/XR!Q![/b!c!i/b#T#Z/bR/eR!Q![/n!c!i/n#T#Z/nR/qR!Q![/z!c!i/z#T#Z/zR/}R!Q![0W!c!i0W#T#Z0WR0ZR!Q![0d!c!i0d#T#Z0dR0gR!Q![0p!c!i0p#T#Z0pR0sR!Q![-g!c!i-g#T#Z-gR1PP;=`<%l-gR1ZPtQcPwx1^Q1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^Q1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^Q2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^Q2oP;=`<%l1^Q2uRO;'S1^;'S;=`3O;=`O1^Q3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~R3uPmQ!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^Q4aP!Q![4dQ4iRzQ!Q![4d!g!h4r#X#Y4rQ4uR{|5O}!O5O!Q![5UQ5RP!Q![5UQ5ZP{Q!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rQ5rR!Q![4d!g!h4r#X#Y4r~6QO!]~V6VPST!Q![4d~6_bV~uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~7jR!Q![7s!c!i7s#T#Z7s~7vR!Q![8P!c!i8P#T#Z8P~8UgY~uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P~;[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq~MPe}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~Ned}!OL|!O!PNb!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~! vg}!OL|!O!PNb!Q![L|![!]6Y!c!d!#_!d!}L|#R#SL|#T#U!#_#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!#bi}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!%P!v!}L|#R#SL|#T#gL|#g#h!%P#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!%Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!&q!h!}L|#R#SL|#T#XL|#X#Y!&q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!&ve`~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!([i}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!)y!u!}L|#R#SL|#T#fL|#f#g!)y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!)|g}!OL|!O!PNb!Q![L|![!]6Y!c!d!+e!d!}L|#R#SL|#T#U!+e#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!+hi}!OL|!O!PNb!Q![L|![!]6Y!c!rL|!r!s!-V!s!}L|#R#SL|#T#dL|#d#e!-V#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!-Yi}!OL|!O!PNb!Q![L|![!]6Y!c!jL|!j!k!.w!k!}L|#R#SL|#T#[L|#[#]!.w#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!.|e!a~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!0bi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!2P!u!}L|#R#SL|#T#fL|#f#g!2P#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!2Si}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!3q!h!}L|#R#SL|#T#XL|#X#Y!3q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!3ti}!OL|!O!PNb!Q![L|![!]6Y!c!hL|!h!i!5c!i!}L|#R#SL|#T#YL|#Y#Z!5c#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!5fi}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!7T!l!}L|#R#SL|#T#]L|#]#^!7T#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!7Wi}!OL|!O!PNb!Q![L|![!]6Y!c!zL|!z!{!8u!{!}L|#R#SL|#T#lL|#l#m!8u#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!8ze^~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!:`i}!OL|!O!PNb!Q![L|![!]6Y!c!gL|!g!h!;}!h!}L|#R#SL|#T#XL|#X#Y!;}#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!<Qi}!OL|!O!PNb!Q![L|![!]6Y!c!tL|!t!u!=o!u!}L|#R#SL|#T#fL|#f#g!=o#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!=ri}!OL|!O!PNb!Q![L|![!]6Y!c!uL|!u!v!?a!v!}L|#R#SL|#T#gL|#g#h!?a#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!?di}!OL|!O!PNb!Q![L|![!]6Y!c!kL|!k!l!AR!l!}L|#R#SL|#T#]L|#]#^!AR#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!AUi}!OL|!O!PNb!Q![L|![!]6Y!c!qL|!q!r!Bs!r!}L|#R#SL|#T#cL|#c#d!Bs#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Bvi}!OL|!O!PNb!Q![L|![!]6Y!c!pL|!p!q!De!q!}L|#R#SL|#T#bL|#b#c!De#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Djeb~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!FQTq~XY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FdTXY!FaYZ!Fa]^!Fapq!Fa#P#Q!Fs~!FxOl~~!F}Op~~!GQP#Q#R!GT~!GYOw~~!G]P![!]!G`~!Gc_!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb%W%o!Hb%p&a!Hb&b1p!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Hgdk~}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!Ixd}!O!Hb!O!P!Iu!Q![!Hb!c!}!Hb#R#S!Hb#T#o!Hb$}%O!Hb%W%o!Hb%p&a!Hb&b1p!Hb1p4U!Hb4U4d!Hb4e$IS!Hb$I`$Ib!Hb$Je$Jg!Hb$Kh%#t!Hb&/x&Et!Hb&FV;'S!Hb?&r?Ah!Hb?BY?Mn!Hb~!K]eh~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!Lqf}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#U!NV#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!NYg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a# q#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~# tg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h##]#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~##`g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#$w#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#$|e!O~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#&bg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#'y#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#'|g}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#)e#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#)hg}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#+P#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~#+Ue}~}!OL|!O!PNb!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|V#,lP!dP#p#q#,oU#,tO!ZU~#,wP#q#r#,z~#-PO!Y~~#-UO!c~~#-ZO!W~\",\n tokenizers: [0, 1, 2],\n topRules: {\"TurtleDoc\":[0,2],\"TrigDoc\":[1,61],\"NTriplesDoc\":[2,71],\"NQuadsDoc\":[3,74]},\n tokenPrec: 931\n})\n","import type { NodePropSource } from '@lezer/common';\nimport { styleTags, tags as t } from '@lezer/highlight';\n\n/**\n * The shared highlight-tag table, Turtle half.\n *\n * `docs/highlight-tags.md` is the canonical table and `test/highlight.test.ts`\n * asserts this against it, so a consumer can keep one `HighlightStyle` for all\n * three languages. Two conventions are worth knowing:\n *\n * - an IRI and a prefixed name are tagged differently (`url` / `namespace`)\n * but denote the same kind of thing, so a style is free to colour them the\n * same — which is what the reference style does;\n * - a datatype IRI is tagged `typeName` rather than `url`, because it\n * qualifies the literal rather than being a term the document is about. The\n * parent-path rules below are more specific than the bare token rules, so\n * they win inside `Datatype`.\n */\nexport const turtleHighlighting: NodePropSource = styleTags({\n Comment: t.comment,\n\n 'AtPrefix AtBase AtVersion KwPrefix KwBase KwGraph KwVersion KeywordA': t.keyword,\n\n IRIRef: t.url,\n 'PNameNS PNameLN': t.namespace,\n\n 'BlankNodeLabel Anon': t.propertyName,\n\n 'String VersionSpecifier': t.string,\n 'Integer Decimal Double': t.number,\n 'True False': t.bool,\n\n LangDir: t.annotation,\n 'Datatype/IRIRef Datatype/PrefixedName/PNameNS Datatype/PrefixedName/PNameLN': t.typeName,\n 'Datatype/\"^^\"': t.typeName,\n\n /*\n * The RDF 1.2 term brackets are tagged apart from ordinary grouping, because\n * `<< s p o >>` and `<<( s p o )>>` differ by one character and mean quite\n * different things — a statement you can refer to, versus an object that *is*\n * a triple. A style that cannot separate them cannot help a reader see that.\n *\n * Each is a `special()` of the standard tag its glyphs actually are, so the\n * fallback chain does the work: a theme that knows nothing about RDF 1.2 and\n * styles `bracket` (or `brace`/`paren`/`angleBracket`) still colours all of\n * them, and one that wants the distinction overrides the specific tag.\n */\n\n /*\n * Every token *inside* an RDF 1.2 nested-triple construct also carries\n * `quote`, so a style can shade the whole thing and not just its brackets —\n * which is what \"colour reified triples differently\" usually means. The\n * `/...` form applies to descendants and *combines* with each token's own\n * tag, so an IRI inside a reified triple is `quote url`, not one or the\n * other. A style that never mentions `quote` sees no change at all.\n *\n * One tag for all three constructs, rather than three: the brackets above\n * already say which kind it is, and a style wanting per-kind regions can add\n * its own props to the exported parser.\n */\n 'ReifiedTriple/... TripleTerm/... NTripleTerm/... AnnotationBlock/...': t.quote,\n\n '\"<<\" \">>\"': t.special(t.angleBracket),\n '\"<<(\" \")>>\"': t.special(t.paren),\n '\"{|\" \"|}\"': t.special(t.brace),\n '\"{\" \"}\"': t.brace,\n '\"[\" \"]\"': t.squareBracket,\n '\"(\" \")\"': t.paren,\n\n // The reifier marker only ever introduces a reifier, so it is worth telling\n // from arithmetic; it falls back to `operator`.\n '\"~\"': t.special(t.operator),\n\n '\";\" \",\"': t.separator,\n '\".\"': t.punctuation,\n});\n","import { syntaxTree } from '@codemirror/language';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { EditorState } from '@codemirror/state';\n\n/** A prefix label (without the colon) mapped to the IRI it expands to. */\nexport type PrefixMap = Record<string, string>;\n\n/** Where `turtle()` and friends may look for prefixes beyond the document. */\nexport type PrefixSource = PrefixMap | ((state: EditorState) => PrefixMap);\n\nexport interface CompletionOptions {\n /**\n * Prefixes the editor should offer even when the document has not declared\n * them — an application's own prefix manager, typically. Document\n * declarations win on conflict, because what the document says is what the\n * document means.\n */\n prefixSource?: PrefixSource;\n}\n\nconst DIRECTIVES = ['@prefix', '@base', 'PREFIX', 'BASE'];\nconst TRIG_DIRECTIVES = [...DIRECTIVES, 'GRAPH'];\nconst TERM_KEYWORDS = ['a', 'true', 'false'];\n\n/** Nodes whose interior is text, not syntax: no completion belongs there. */\nconst INERT = new Set(['Comment', 'String', 'VersionSpecifier', 'IRIRef']);\n\n/**\n * The prefixes declared by the document itself, read from the syntax tree.\n *\n * Both spellings are read — `@prefix ex: <…>` and `PREFIX ex: <…>` — because a\n * document may mix them, and a reader completing `ex:` does not care which one\n * declared it.\n */\nexport function documentPrefixes(state: EditorState): PrefixMap {\n const prefixes: PrefixMap = {};\n const tree = syntaxTree(state);\n tree.iterate({\n enter: (node) => {\n if (node.name !== 'PrefixID' && node.name !== 'SparqlPrefix') return;\n let label: string | null = null;\n let iri: string | null = null;\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name === 'PNameNS' && label === null) {\n label = state.sliceDoc(child.from, child.to).slice(0, -1);\n } else if (child.name === 'IRIRef' && iri === null) {\n iri = state.sliceDoc(child.from + 1, child.to - 1);\n }\n }\n if (label !== null) prefixes[label] = iri ?? '';\n },\n });\n return prefixes;\n}\n\nfunction resolveSource(source: PrefixSource | undefined, state: EditorState): PrefixMap {\n if (!source) return {};\n return typeof source === 'function' ? source(state) : source;\n}\n\n/** Every prefix the editor knows about: the external source, overlaid by the document's. */\nexport function knownPrefixes(state: EditorState, options: CompletionOptions = {}): PrefixMap {\n return { ...resolveSource(options.prefixSource, state), ...documentPrefixes(state) };\n}\n\nfunction prefixCompletions(state: EditorState, options: CompletionOptions): Completion[] {\n const prefixes = knownPrefixes(state, options);\n return Object.entries(prefixes).map(([label, iri]) => ({\n label: `${label}:`,\n type: 'namespace',\n detail: iri || undefined,\n }));\n}\n\nfunction keywordCompletions(words: readonly string[]): Completion[] {\n return words.map((label) => ({ label, type: 'keyword' }));\n}\n\n/**\n * Is the cursor inside a literal or IRI that has not been closed yet?\n *\n * A half-typed `\"some tex` or `<http://ex` never reaches a `String` or\n * `IRIRef` node — it is error debris, and the error node covers only the last\n * word — so the node name cannot answer this. Scanning the line up to the\n * cursor can, and it is the state a reader is in while typing one.\n *\n * Two details earn their place. `<<` is not an IRI, so it does not open one,\n * which keeps completion alive inside a half-typed reified triple. And an IRI\n * cannot contain a space, so whitespace closes the scan rather than\n * suppressing completion for the rest of the line.\n *\n * The scan is line-local, so an unterminated *long* string (`\"\"\"…`) spanning\n * lines is not detected past its first line. Terminated ones are, through the\n * `String` node above.\n */\nfunction inUnterminatedTerm(state: EditorState, pos: number): boolean {\n const line = state.doc.lineAt(pos);\n const text = line.text.slice(0, pos - line.from);\n let quote: string | null = null;\n let angle = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (quote) {\n if (ch === '\\\\') i++;\n else if (ch === quote) quote = null;\n } else if (angle) {\n if (ch === '>' || ch === ' ' || ch === '\\t') angle = false;\n } else if (ch === '\"' || ch === \"'\") {\n quote = ch;\n } else if (ch === '<' && text[i + 1] !== '<') {\n angle = true;\n }\n }\n return quote !== null || angle;\n}\n\n/**\n * Completion for Turtle-family documents.\n *\n * Deliberately context-light: it offers directives, the three term keywords and\n * the document's prefixes wherever a word is being typed, rather than trying to\n * work out whether the cursor is in a subject or an object position. In an\n * error-tolerant tree a half-typed statement usually has no reliable position\n * to read, and a wrong context is worse than a slightly long list.\n */\nexport function turtleCompletionSource(\n options: CompletionOptions = {},\n dialect: 'turtle' | 'trig' = 'turtle'\n) {\n return (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/[@A-Za-z_][\\w.-]*:?/);\n if (!word && !context.explicit) return null;\n const from = word ? word.from : context.pos;\n\n const node = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (INERT.has(node.name)) return null;\n if (inUnterminatedTerm(context.state, context.pos)) return null;\n\n const directives = dialect === 'trig' ? TRIG_DIRECTIVES : DIRECTIVES;\n return {\n from,\n options: [\n ...keywordCompletions(directives),\n ...keywordCompletions(TERM_KEYWORDS),\n ...prefixCompletions(context.state, options),\n ],\n validFor: /^[@A-Za-z_][\\w.-]*:?$/,\n };\n };\n}\n","import { ensureSyntaxTree } from '@codemirror/language';\nimport { linter } from '@codemirror/lint';\nimport type { EditorState, Extension } from '@codemirror/state';\n\nexport interface ParseError {\n from: number;\n to: number;\n message: string;\n}\n\n/**\n * How long to spend completing the parse before reporting errors. A partial\n * tree ends in error nodes that are not in the document, so nothing is\n * reported until the parse reaches the end.\n */\nconst PARSE_TIMEOUT_MS = 1000;\n\n/** Whitespace and `#` comments: what may separate error nodes in one run. */\nconst GAP = /^(?:\\s|#.*)*$/;\n\n/**\n * Every parse error in the document.\n *\n * The parser recovers by skipping one token at a time, so `this is a test`\n * produces four error nodes. Nodes separated only by whitespace or comments are\n * merged into one error.\n */\nexport function parseErrors(state: EditorState): ParseError[] {\n const tree = ensureSyntaxTree(state, state.doc.length, PARSE_TIMEOUT_MS);\n if (!tree) return [];\n const runs: { from: number; to: number }[] = [];\n tree.iterate({\n enter: (node) => {\n if (!node.type.isError) return;\n const last = runs[runs.length - 1];\n if (last && (node.from <= last.to || GAP.test(state.sliceDoc(last.to, node.from))))\n last.to = Math.max(last.to, node.to);\n else runs.push({ from: node.from, to: node.to });\n },\n });\n return runs.map(({ from, to }) => ({ from, to, message: errorMessage(state.sliceDoc(from, to)) }));\n}\n\nfunction errorMessage(text: string): string {\n const shown = text.replace(/\\s+/g, ' ').trim();\n if (!shown) return 'Syntax error.';\n return `Unexpected “${shown.length > 32 ? `${shown.slice(0, 32)}…` : shown}”.`;\n}\n\n/** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()` and `nquads()`. */\nexport function parseErrorLinter(): Extension {\n return linter((view) => parseErrors(view.state).map((error) => ({ ...error, severity: 'error' })));\n}\n","import type { SyntaxNode } from '@lezer/common';\nimport type { EditorState } from '@codemirror/state';\nimport {\n LRLanguage,\n LanguageSupport,\n delimitedIndent,\n foldInside,\n foldNodeProp,\n indentNodeProp,\n syntaxTree,\n} from '@codemirror/language';\nimport type { LRParser } from '@lezer/lr';\nimport { parser as rawParser } from './turtle.grammar';\nimport { turtleHighlighting } from './highlight';\nimport { turtleCompletionSource } from './complete';\nimport type { CompletionOptions } from './complete';\nimport { parseErrorLinter } from './lint';\n\nexport type { CompletionOptions, PrefixMap, PrefixSource } from './complete';\nexport { documentPrefixes, knownPrefixes, turtleCompletionSource } from './complete';\nexport { turtleHighlighting } from './highlight';\nexport { parseErrorLinter, parseErrors } from './lint';\nexport type { ParseError } from './lint';\n\n/** The unconfigured grammar, for callers that want their own `top` or props. */\nexport const parser: LRParser = rawParser;\n\n/**\n * Fold a whole statement from the end of its first line.\n *\n * This is the one fold in Turtle with no brackets around it: a subject with a\n * long `;` list is the common shape a reader wants collapsed, and the structure\n * that shape has is a statement, not a delimiter.\n *\n * It stands aside when a bracket opens on the same line. Folding\n * `ex:s ex:p [` at the statement level would hide the `] .` as well, leaving\n * what is left looking unterminated; the bracket's own fold — which CodeMirror\n * would otherwise never reach, since the statement node encloses it — reads\n * correctly.\n */\nconst statementFold = (node: SyntaxNode, state: EditorState) => {\n const firstLineEnd = state.doc.lineAt(node.from).to;\n if (node.to <= firstLineEnd) return null;\n for (let n: SyntaxNode | null = syntaxTree(state).resolveInner(firstLineEnd, -1); n; n = n.parent) {\n if (n.from < node.from) break;\n if (n.type.prop(foldNodeProp) && n.from <= firstLineEnd && n.to > firstLineEnd && n.type !== node.type) return null;\n }\n return { from: firstLineEnd, to: node.to };\n};\n\n/**\n * Highlighting, folding and indentation, shared by all four dialects.\n *\n * Exported so a consumer can re-configure the parser with props of their own —\n * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart\n * rather than all as `quote`. `codemirror-lang-sparql12` exports `sparqlProps`\n * for the same reason.\n */\nexport const turtleProps = [\n turtleHighlighting,\n indentNodeProp.add({\n BlankNodePropertyList: delimitedIndent({ closing: ']' }),\n Collection: delimitedIndent({ closing: ')' }),\n WrappedGraph: delimitedIndent({ closing: '}' }),\n AnnotationBlock: delimitedIndent({ closing: '|}' }),\n TripleTerm: delimitedIndent({ closing: ')>>' }),\n ReifiedTriple: delimitedIndent({ closing: '>>' }),\n }),\n foldNodeProp.add({\n BlankNodePropertyList: foldInside,\n Collection: foldInside,\n WrappedGraph: foldInside,\n AnnotationBlock: foldInside,\n 'Triples Triples2 TriplesOrGraph': statementFold,\n }),\n];\n\nconst languageData = {\n commentTokens: { line: '#' },\n closeBrackets: { brackets: ['[', '(', '<', '\"', \"'\"] },\n indentOnInput: /^\\s*[\\]})]$/,\n};\n\nfunction define(top: string) {\n return LRLanguage.define({\n name: top === 'TurtleDoc' ? 'turtle' : top === 'TrigDoc' ? 'trig' : top === 'NTriplesDoc' ? 'ntriples' : 'nquads',\n parser: rawParser.configure({ top, props: turtleProps }),\n languageData,\n });\n}\n\nexport const turtleLanguage = define('TurtleDoc');\nexport const trigLanguage = define('TrigDoc');\nexport const ntriplesLanguage = define('NTriplesDoc');\nexport const nquadsLanguage = define('NQuadsDoc');\n\nfunction support(language: LRLanguage, options: CompletionOptions, dialect: 'turtle' | 'trig') {\n return new LanguageSupport(language, [\n language.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),\n parseErrorLinter(),\n ]);\n}\n\n/** RDF 1.2 Turtle. */\nexport function turtle(options: CompletionOptions = {}): LanguageSupport {\n return support(turtleLanguage, options, 'turtle');\n}\n\n/** RDF 1.2 TriG. */\nexport function trig(options: CompletionOptions = {}): LanguageSupport {\n return support(trigLanguage, options, 'trig');\n}\n\n/**\n * RDF 1.2 N-Triples.\n *\n * A strict subset with its own entry point rather than Turtle in a lenient\n * mood: a prefixed name or a `;` list in an N-Triples document is an error, and\n * an editor that colours it as valid is lying about the file it will write.\n */\nexport function ntriples(): LanguageSupport {\n return new LanguageSupport(ntriplesLanguage, parseErrorLinter());\n}\n\n/** RDF 1.2 N-Quads. */\nexport function nquads(): LanguageSupport {\n return new LanguageSupport(nquadsLanguage, parseErrorLinter());\n}\n"],"names":["parser","t","rawParser"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/turtle.grammar","../src/highlight.ts","../src/complete.ts","../src/lint.ts","../src/index.ts"],"sourcesContent":["// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport {LRParser} from \"@lezer/lr\"\nconst spec_patchWord = {__proto__:null,H:248, TX:252, PA:256, PD:260, A:262, D:266, TC:268, TA:270}\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"<UQYQPOOQ!WQPOOQ!bQPOOQ!bQPOOQ!jQQOOOOQO'#Ce'#CeOOQO'#Eo'#EoO#OQPO'#CaO#TQPO'#CgO#`QPO'#CiO#TQPO'#CkO#eQPO'#CmO#jQPO'#CmOOQO'#C_'#C_OOQO'#Cv'#CvO$pQSO'#C{O$wQPO'#DOO%VQPO'#DbO$wQPO'#CqO%kQPO'#CqOOQO'#En'#EnO&PQPO'#EnOOQO'#Ea'#EaQYQPOOOOQO'#Dn'#DnO&UQPO'#DqO&cQPO'#DlO&tQPO'#DsO'VQPO'#DsO'hQPO'#DtO$wQPO'#DtOOQO'#Ew'#EwOOQO'#Ev'#EvOOQO'#Ef'#EfQ!WQPOOOOQO'#Ey'#EyOOQO'#Eg'#EgQ!bQPOOO#TQPO'#DvOOQO'#Eh'#EhQ!bQPOOO#TQPO'#DyOOQO'#D}'#D}O'yQQO'#D|OOQO'#ER'#ERO(OQPO'#EQOOQO'#ET'#ETO(TQQO'#ESOOQO'#EW'#EWO(TQQO'#EVOOQO'#EY'#EYO!bQPO'#EXOOQO'#E['#E[O!bQPO'#EZOOQO'#FP'#FPO(]QQO'#EPOOQO'#Ez'#EzOOQO'#Ei'#EiQ!jQQOOO#TQPO,58{O(qQPO,59RO#TQPO,59TOOQO,59V,59VOOQO,59X,59XO(vQPO,59XOOQO'#Eb'#EbO({QSO,59gOOQO,59g,59gO)SQSO'#DPOOQO'#DU'#DUOOQO'#DY'#DYOOQO'#Eq'#EqO&cQPO'#D_OOQO'#Ep'#EpOOQO'#Cs'#CsO*^QPO,59jO*cQSO'#CrOOQO'#Et'#EtO$wQPO,59|OOQO,59],59]OOQO,5;Y,5;YOOQO-E8_-E8_O+SQPO'#DrOOQO,5:],5:]O+[QPO,5:]O'QQPO,5:WOOQO,5:_,5:_O+aQPO,5:_OOQO,5:`,5:`O+fQPO,5:`OOQO-E8d-E8dOOQO-E8e-E8eO+kQQO,5:bOOQO-E8f-E8fO+kQQO,5:eOOQO'#EO'#EOO+yQQO,5:hOOQO,5:l,5:lOOQO'#EU'#EUOOQO'#FR'#FRO,UQPO,5:nO,ZQPO,5:qO,`QPO,5:sO,eQPO'#FUO,jQPO,5:uOOQO'#Ej'#EjO(]QQO,5:kOOQO'#E^'#E^O,oQPO'#E]OOQO'#E`'#E`O,tQPO'#E_OOQO,5:k,5:kOOQO-E8g-E8gO,yQPO1G.gOOQO1G.m1G.mOOQO1G.o1G.oOOQO1G.s1G.sOOQO-E8`-E8`OOQO1G/R1G/RO#TQPO'#DSOOQO,59k,59kOOQO'#Er'#ErO$wQPO,59yOOQO1G/U1G/UO-OQQO'#DPO-pQQO'#CuO.UQPO,59^O.aQSO1G/hO.zQPO,5:^OOQO1G/w1G/wOOQO1G/r1G/rOOQO1G/y1G/yOOQO1G/z1G/zO/XQPO'#DPOOQO'#Ex'#ExO!bQPO'#DwO/sQPO1G/|O/xQPO1G0POOQO'#E}'#E}O0TQPO1G0SO0YQPO1G0YOOQO1G0]1G0]OOQO1G0_1G0_O+kQQO,5;pOOQO1G0a1G0aOOQO-E8h-E8hOOQO1G0V1G0VOOQO,5:w,5:wOOQO,5:y,5:yOOQO7+$R7+$ROOQO,59n,59nO0_QSO1G/eO0xQSO'#DcO$wQPO'#DhOOQO'#Ec'#EcO1`QQO'#DeO*cQSO'#EdO1tQPO,59aO1tQPO,59aO2eQPO'#EeO2oQPO1G.xOOQO'#Eu'#EuO2zQPO7+%SO3SQWO'#DcOOQO1G/x1G/xO3jQPO,5:cOOQO7+%h7+%hOOQO'#Dz'#DzOOQO7+%k7+%kO3oQPO7+%kOOQO7+%n7+%nOOQO7+%t7+%tO3tQPO1G1[OOQO'#Es'#EsO4PQPO7+%POOQO,59},59}O4UQPO,5:SOOQO-E8a-E8aO4ZQQO,5;OOOQO-E8b-E8bO4oQPO1G.{O*cQSO,5;POOQO-E8c-E8cO4}QPO'#DcOOQO<<Hn<<HnO5UQPO<<HnO+kQQO1G/}OOQO<<IV<<IVOOQO7+&v7+&vOOQO<<Hk<<HkOOQO1G/n1G/nOOQO1G0j1G0jOOQO1G0k1G0kOOQOAN>YAN>YO5ZQPO7+%iOOQO<<IT<<ITO5`QQO'#CuO5tQQO'#DeO6YQQO,5;OO*cQSO,5;PO*cQSO'#CrO*cQSO'#EdO6nQPO,59aO6nQPO,59aO6|QPO'#EeO7WQPO1G.xO7cQPO1G.{O7qQPO,59^\",\n stateData: \"8`~O#aOSPOS~OUVOVTOWUOYTO[WO^XO`YObZOd[Ok^Ol^On_Oq`O!TaO~O!ajO!diO~PYOWsOksO~O#pzO#r|O#t!OO#v!QO#w!SO#y!UO~OV!]O~OVTOWUOYTO~OV!_O~Oc!aO~Oc!bO~OVTOWUOYTOk^Ol^On_Oq`Ot!fOy!gOz!gO{!gO}!hO!O!hO!Q!jO!TaO~Om!eO~P#oOVTOWUOYTOh!lO~OVTOWUOYTOk^Ol^O!TaO~OVTOWUOYTOh!lOSeX!ceX~OS!rO~On_Oq`O!c!uO~P%VOVTOWUOYTOk^Ol^O~OVTOWUOYTOh!lO!diO~OS!xOVTOWUOYTOh!lO~OS!zOVTOWUOYTOh!lO~O#o#RO~OS#TO~Ot#VO#o#UO~O#t!OO#v!QO#w!SO#y!UO#z#_O#{#aO~OS#fO~OS#hO~Om#jO~P#oOu#lOw#kOVsXWsXYsXksXlsXmsXnsXqsXtsXysXzsX{sX}sX!OsX!QsX!TsX~Op#oO~On_Oq`Ot#pOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOS#tO!c!fX~O!c#uO~OS#wO~OS#xO~OW#zOk#zOt#yO!Q#{O~OW$OOk$OOt#yO~OW$QO~OS$RO~OS$SO~OW$TO~OS$UO~OS$XO~OS$YO~OS$ZO~Ou#lOw#kOpsX!WsX!ZsX!]sX!^sXSsX!csX!YsX~O!W$^O!Z$_O!]$bOpiX!^iX!YiX~O!^$eOpfa!Yfa~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P%VOn_Oq`O!c!fa~P%VOu#lOw#kOSsXWsXksX!SsX!WsX!PsX~OS$lO~OS$nOW$mOk$mO~OS$pO~OS$qO~Ot#yOy!gOz!gO{!gO}!hO!O!hO!Q!jO~P&cOp!VX!W!VX!Z!VX!]!VX!^!VX!Y!VX~P&cO!W$^O!Z$_Op!XX!]!XX!^!XX!Y!XX~O!]$bOpia!^ia!Yia~OVTOWUOYTOh!lO!^#XX~Op#XX!Y#XX~P2SO!^$eOpfi!Yfi~O!S%OO!W$}O~OS!VX!W!VX!Z!VX!]!VX!^!VX!c!VX~P&cOW%QO~OS%RO~OW$mOk$mOS#xi~O!P%TO~O!Y%UO~O!W$^O!Z$_Op#Wa!]#Wa!^#Wa!Y#Wa~O!]$bOpii!^ii!Yii~O!S!VX~P&cO!S%XO~O!P%ZO~O!W$iO!Z$_O!]%aOSiX!^iX!ciX~O!W$iO!Z$_OS!XX!]!XX!^!XX!c!XX~O!W$iO!Z$_OS#Wa!]#Wa!^#Wa!c#Wa~O!]%aOSia!^ia!cia~OS#XX!c#XX~P2SO!^%dOSfi!cfi~O!]%aOSii!^ii!cii~O!^%dOSfa!cfa~OYV^`U[du{zy!ab}!Oh!a~\",\n goto: \"2a#yPPP#zP$SPPP$YP$SP$SP$SP$SPPP%V%_%qP&Z&ePPPP']PP'q(VPP(lP(qPPP(qPPPP(}PP)_)yP*UPP*`PPP*hP*lPP*s*}*h*hP+T+XP+_+cP+i+m+q+i+t+x+|,S,Y+|,^+|,d+|,j,p,v,p,z-O-U-[-h-z.U.[.b.h.nPPP.t.x0e(}0w0z0}1Q1T$O1X1e1tPP1xP1{P2TPP2ZSdOgTpPrX]OPgr!uUOPWY_`abcgijklmnrvy!]!_!d!j!n!p#k#n#s#t$]$^$_$b$e$i${$}%_%`%a%dSeOgT!ti#tQ!m`S!qbcS!yklS!{mnR$v$_S!n`$_Q#s!pQ$]#nQ${$eQ%_%d]%`bcklmnQ#r!nS%W${%_R%g%`WbOgi#tUhPjr`!k_!d!n$b${%_%`%aQ!oaQ#m!jQ$g#sQ$s$]V$u$^$i$}WbOgi#tSnPra!k_!d!n$b${%_%`%aWcOgi#tSmPra!k_!d!n$b${%_%`%ad!i_!d!n#s$]$b${%_%`%aW#z#O#Q$T%QR$O#SV#l!f#p#ye!i_!d!n#s$]$b${%_%`%a`!k_!d!n$b${%_%`%aQ$g#sR$s$]WcOgi#tSlPr`!k_!d!n$b${%_%`%aQ!oaR$g#s[$`#q$a$x%[%]%^R%P$hQ$d#qS%V$x%^R%c%[]$`#q$a$x%[%]%^ToPrSkPrR!wjSoPrQ!xkR#v!wQ!viR$j#tTtQuX#z#O#Q$T%QTwRxQ$o#}R%S$rT!YS![T{S![R#S{T!XS![T}S![X!WS!X![#^X!PS!X![#^T#V!P!RX!RS!X![#^X!TS!X![#^X!VS!X![#^Q#c!XR$W#^T#`!X#^T#b!X#^QgOR!sgQ!d_R#i!dS$a#q$xS$w$a%]T%]%[%^Q$c#qW$y$c$z%b%fQ$z$dQ%b%[R%f%cQ$f#rS$|$f%eR%e%gQrPR!|rQuQR!}uQxRR#PxQ![SR#d![Q#^!XR$V#^TfOgWbOgi#tUhPjrQ!^WQ!`Y`!k_!d!n$b${%_%`%ah!l`bcklmn!p#n$_$e%dQ!oaQ#OvQ#QyQ#e!]Q#g!_Q#m!jQ$[#kQ$g#sQ$s$]V$u$^$i$}S!c_!dS#q!n${Q$x$bS%[%_%`R%^%aR#n!jR$t$]R!paR$h#sTqPrQ#|#OQ#}#QQ$r$TR%Y%QSvQuSyRxS#Z!T!VR$k#{T!ZS![R$P#SS!YS![T#]!X#^Q#W!PR#X!RQ#Y!TR#[!V\",\n nodeNames: \"⚠ Comment TurtleDoc Directive . PrefixID AtPrefix PNameNS IRIRef PrefixedName PNameLN Base AtBase SparqlPrefix KwPrefix SparqlBase KwBase Version KwVersion VersionSpecifier AtVersion Triples PredicateObjectList Verb KeywordA ObjectList BlankNode BlankNodeLabel Anon ) ( Collection ] [ BlankNodePropertyList RDFLiteral String LangDir Datatype ^^ NumericLiteral Integer Decimal Double BooleanLiteral True False )>> <<( TripleTerm >> << ReifiedTriple Reifier ~ Annotation |} {| AnnotationBlock , ; TrigDoc GraphStatement KwGraph LabelOrSubject } { WrappedGraph TriplesBlock TriplesOrGraph Triples2 NTriplesDoc NTriple NTripleTerm NQuadsDoc NQuad GraphLabel RdfPatchDoc Header KwH HeaderKey Transaction TxBegin KwTX PrefixAdd KwPA PatchPrefix PrefixDelete KwPD QuadAdd KwA QuadDelete KwD TxCommit KwTC TxAbort KwTA\",\n maxTerm: 135,\n nodeProps: [\n [\"openedBy\", 29,\"(\",32,\"[\",47,\"<<(\",50,\"<<\",56,\"{|\",65,\"{\"],\n [\"closedBy\", 30,\")\",33,\"]\",48,\")>>\",51,\">>\",57,\"|}\",66,\"}\"]\n ],\n skippedNodes: [0,1],\n repeatNodeCount: 10,\n tokenData: \"#.o~R!]XY$zYZ$z]^$zpq$zrs%]st,]wx,wxy3kyz3p{|4T|}5{}!O4T!O!P6Q!Q![5^![!]6Y!]!^<j!^!_<o!`!aAZ!b!cAf!c!dL|!d!e! u!e!iL|!i!j!(c!j!rL|!r!s!0s!s!xL|!x!y!:}!y!}L|!}#O!F{#P#Q!Gx#Q#R!G}#R#S!HY#T#U!LW#U#V! u#V#YL|#Y#Z!Mp#Z#[!(c#[#dL|#d#e!0s#e#hL|#h#i#'k#i#jL|#j#k!:}#k#oL|#o#p#-{#p#q#.Y#q#r#.e#r#s#.j%W%oL|%p&aL|&b1pL|4U4dL|4e$ISL|$I`$IbL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~%PS#a~XY$zYZ$z]^$zpq$zV%`XOY%{Z]%{^r%{rs)os#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&OXOY%{Z]%{^r%{rs&ks#O%{#O#P&r#P;'S%{;'S;=`)i<%lO%{V&rOtUcPV&uYrs%{wx%{!w!x'e#O#P%{#U#V%{#Y#Z%{#b#c%{#f#g%{#h#i%{#i#j(gV'hR!Q!['q!c!i'q#T#Z'qV'tR!Q!['}!c!i'}#T#Z'}V(QR!Q![(Z!c!i(Z#T#Z(ZV(^R!Q![(g!c!i(g#T#Z(gV(jR!Q![(s!c!i(s#T#Z(sV(vR!Q![)P!c!i)P#T#Z)PV)SR!Q![)]!c!i)]#T#Z)]V)`R!Q![%{!c!i%{#T#Z%{V)lP;=`<%l%{V)vPtUcPrs)yU)|VOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^<%lO)yU*fTOr)yrs*us;'S)y;'S;=`+^<%lO)yU*xTOr)yrs+Xs;'S)y;'S;=`+^<%lO)yU+^OtUU+aP;=`<%l)yU+gRO;'S)y;'S;=`+p;=`O)yU+sWOr)yrs*cs#O)y#O#P+d#P;'S)y;'S;=`+^;=`<%l)y<%lO)y~,bTP~OY,]Z],]^;'S,];'S;=`,q<%lO,]~,tP;=`<%l,]V,zXOY-gZ]-g^w-gwx1Sx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV-jXOY-gZ]-g^w-gwx&kx#O-g#O#P.V#P;'S-g;'S;=`0|<%lO-gV.YYrs-gwx-g!w!x.x#O#P-g#U#V-g#Y#Z-g#b#c-g#f#g-g#h#i-g#i#j/zV.{R!Q![/U!c!i/U#T#Z/UV/XR!Q![/b!c!i/b#T#Z/bV/eR!Q![/n!c!i/n#T#Z/nV/qR!Q![/z!c!i/z#T#Z/zV/}R!Q![0W!c!i0W#T#Z0WV0ZR!Q![0d!c!i0d#T#Z0dV0gR!Q![0p!c!i0p#T#Z0pV0sR!Q![-g!c!i-g#T#Z-gV1PP;=`<%l-gV1ZPtUcPwx1^U1aVOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l<%lO1^U1yTOw1^wx2Yx;'S1^;'S;=`2l<%lO1^U2]TOw1^wx+Xx;'S1^;'S;=`2l<%lO1^U2oP;=`<%l1^U2uRO;'S1^;'S;=`3O;=`O1^U3RWOw1^wx1vx#O1^#O#P2r#P;'S1^;'S;=`2l;=`<%l1^<%lO1^~3pOn~T3uPmS!`!a3xP3{P!`!a4OP4TO!PP~4WQ!O!P4^!Q![5^S4aP!Q![4dS4iRzS!Q![4d!g!h4r#X#Y4rS4uR{|5O}!O5O!Q![5US5RP!Q![5US5ZP{S!Q![5U~5cSy~!O!P5o!Q![5^!g!h4r#X#Y4rS5rR!Q![4d!g!h4r#X#Y4r~6QO!]~_6VPSZ!Q![4d]6_bV]uv7g!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P%W%o8P%p&a8P&b1p8P4U4d8P4e$IS8P$I`$Ib8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]7jR!Q![7s!c!i7s#T#Z7s]7vR!Q![8P!c!i8P#T#Z8P]8UgY]uv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P]9pguv7g}!O8P!O!P9m!Q![8P![!]8P!c!}8P#O#P;X#R#S8P#T#o8P$}%O8P%W%o8P%p&a8P&b1p8P1p4U8P4U4d8P4e$IS8P$I`$Ib8P$Je$Jg8P$Kh%#t8P&/x&Et8P&FV;'S8P?&r?Ah8P?BY?Mn8P];[dqr8Pst8Ptu8Puv8Pvw8Pwx8Pxy8Pyz8Pz{8P{|8P|}8P}!O8P!O!P8P!P!Q8P!]!^8P!_!`8P!a!b8P!b!c8P#R#S8P#r#s8P~<oO!^~~<r]qr=ks!^=k!^!_@|!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~=n[qr=ks!^=k!_!`=k!`!a>d!a#O=k#O#P>i#P#Q=k#R#S=k#T#o=k#r;'S=k;'S;=`@v<%lO=k~>iOW~~>lQ!w!x>r#i#j?t~>uR!Q![?O!c!i?O#T#Z?O~?RR!Q![?[!c!i?[#T#Z?[~?_R!Q![?h!c!i?h#T#Z?h~?kR!Q![?t!c!i?t#T#Z?t~?wR!Q![@Q!c!i@Q#T#Z@Q~@TR!Q![@^!c!i@^#T#Z@^~@aR!Q![@j!c!i@j#T#Z@j~@mR!Q![=k!c!i=k#T#Z=k~@yP;=`<%l=k~ARP!T~xyAU~AZO!Q~~A^P!`!aAa~AfO!S~~AiW!c!}BR#T#UBR#U#VEy#V#dBR#d#eGf#e#jBR#j#kJO#k#oBR~BWRu~}!OBa!c!}Cy#T#oCy~BdS}!OBp!Q![Ch!c!}Ch#T#oCh~BsQ#`#aBy#f#gC[~B|P#h#iCP~CSP#f#gCV~C[Ou~~C_P#h#iCb~CeP#`#aCV~CmSu~}!OBa!Q![Ch!c!}Ch#T#oCh~DORu~}!OBa!c!}DX#T#oDX~D^Ru~}!OBa!c!}Dg#T#oDg~DlRu~}!OBa!c!}Du#T#oDu~DzRu~}!OBa!c!}ET#T#oET~EYRu~}!OBa!c!}Ec#T#oEc~EhRu~}!OBa!c!}Eq#T#oEq~EvPu~}!OBa~FOSu~}!OBa!c!}Cy#T#UF[#U#oCy~FaTu~}!OBa!c!}DX#T#gDX#g#hFp#h#oDX~FuTu~}!OBa!c!}Dg#T#XDg#X#YGU#Y#oDg~G]R[~u~}!OBa!c!}Du#T#oDu~GkTu~}!OBa!c!}Cy#T#fCy#f#gGz#g#oCy~HPTu~}!OBa!c!}DX#T#XDX#X#YH`#Y#oDX~HeTu~}!OBa!c!}Dg#T#YDg#Y#ZHt#Z#oDg~HyTu~}!OBa!c!}Du#T#]Du#]#^IY#^#oDu~I_Tu~}!OBa!c!}ET#T#lET#l#mIn#m#oET~IuRU~u~}!OBa!c!}Ec#T#oEc~JTTu~}!OBa!c!}Cy#T#XCy#X#YJd#Y#oCy~JiTu~}!OBa!c!}DX#T#fDX#f#gJx#g#oDX~J}Tu~}!OBa!c!}Dg#T#gDg#g#hK^#h#oDg~KcTu~}!OBa!c!}Du#T#]Du#]#^Kr#^#oDu~KwTu~}!OBa!c!}ET#T#cET#c#dLW#d#oET~L]Tu~}!OBa!c!}Ec#T#bEc#b#cLl#c#oEc~LsRd~u~}!OBa!c!}Eq#T#oEq_MRe#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_Ngd}!OL|!O!PNd!Q![L|!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_! zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!#c!d!}L|#R#SL|#T#U!#c#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!#hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!%V!v!}L|#R#SL|#T#gL|#g#h!%V#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!%[i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!&y!h!}L|#R#SL|#T#XL|#X#Y!&y#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!'Qe#oQ`P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!(hi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!*V!u!}L|#R#SL|#T#fL|#f#g!*V#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!*[g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!d!+s!d!}L|#R#SL|#T#U!+s#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!+xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!rL|!r!s!-g!s!}L|#R#SL|#T#dL|#d#e!-g#e#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!-li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!jL|!j!k!/Z!k!}L|#R#SL|#T#[L|#[#]!/Z#]#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!/be#oQ!aP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!0xi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!2g!u!}L|#R#SL|#T#fL|#f#g!2g#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!2li#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!4Z!h!}L|#R#SL|#T#XL|#X#Y!4Z#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!4`i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!hL|!h!i!5}!i!}L|#R#SL|#T#YL|#Y#Z!5}#Z#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!6Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!7q!l!}L|#R#SL|#T#]L|#]#^!7q#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!7vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!zL|!z!{!9e!{!}L|#R#SL|#T#lL|#l#m!9e#m#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!9le#oQ^P}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!;Si#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!gL|!g!h!<q!h!}L|#R#SL|#T#XL|#X#Y!<q#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!<vi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!tL|!t!u!>e!u!}L|#R#SL|#T#fL|#f#g!>e#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!>ji#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!uL|!u!v!@X!v!}L|#R#SL|#T#gL|#g#h!@X#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!@^i#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!kL|!k!l!A{!l!}L|#R#SL|#T#]L|#]#^!A{#^#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!BQi#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!qL|!q!r!Co!r!}L|#R#SL|#T#cL|#c#d!Co#d#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Cti#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!pL|!p!q!Ec!q!}L|#R#SL|#T#bL|#b#c!Ec#c#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Eje#oQbP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|~!GQTq~XY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GdTXY!GaYZ!Ga]^!Gapq!Ga#P#Q!Gs~!GxOl~~!G}Op~~!HQP#Q#R!HT~!HYOw~~!H]P![!]!H`~!Hc_!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib%W%o!Ib%p&a!Ib&b1p!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Igdk~}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib~!Jxd}!O!Ib!O!P!Ju!Q![!Ib!c!}!Ib#R#S!Ib#T#o!Ib$}%O!Ib%W%o!Ib%p&a!Ib&b1p!Ib1p4U!Ib4U4d!Ib4e$IS!Ib$I`$Ib!Ib$Je$Jg!Ib$Kh%#t!Ib&/x&Et!Ib&FV;'S!Ib?&r?Ah!Ib?BY?Mn!Ib_!L_e#oQhP}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_!Muf#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#U# Z#U#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_# `g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#`L|#`#a#!w#a#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#!|g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#gL|#g#h#$e#h#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#$jg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#&R#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#&Ye#oQ!OS}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#'pg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#fL|#f#g#)X#g#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#)^g#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#iL|#i#j#*u#j#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#*zg#oQ}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#XL|#X#Y#,c#Y#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#,je#oQ}S}!OL|!O!PNd!Q![L|![!]6Y!c!}L|#R#SL|#T#oL|$}%OL|%W%oL|%p&aL|&b1pL|1p4UL|4U4dL|4e$ISL|$I`$IbL|$Je$JgL|$Kh%#tL|&/x&EtL|&FV;'SL|?&r?AhL|?BY?MnL|_#.QP!dP#p#q#.T^#.YO!Z^~#.]P#q#r#.`~#.eO!Y~~#.jO!c~~#.oO!W~\",\n tokenizers: [0, 1, 2, 3],\n topRules: {\"TurtleDoc\":[0,2],\"TrigDoc\":[1,61],\"NTriplesDoc\":[2,71],\"NQuadsDoc\":[3,74],\"RdfPatchDoc\":[4,77]},\n specialized: [{term: 123, get: (value) => spec_patchWord[value] || -1}],\n tokenPrec: 1056\n})\n","import type { NodePropSource } from '@lezer/common';\nimport { styleTags, tags as t } from '@lezer/highlight';\n\n/**\n * The shared highlight-tag table, Turtle half.\n *\n * `docs/highlight-tags.md` is the canonical table and `test/highlight.test.ts`\n * asserts this against it, so a consumer can keep one `HighlightStyle` for all\n * three languages. Two conventions are worth knowing:\n *\n * - an IRI and a prefixed name are tagged differently (`url` / `namespace`)\n * but denote the same kind of thing, so a style is free to colour them the\n * same — which is what the reference style does;\n * - a datatype IRI is tagged `typeName` rather than `url`, because it\n * qualifies the literal rather than being a term the document is about. The\n * parent-path rules below are more specific than the bare token rules, so\n * they win inside `Datatype`.\n */\nexport const turtleHighlighting: NodePropSource = styleTags({\n Comment: t.comment,\n\n 'AtPrefix AtBase AtVersion KwPrefix KwBase KwGraph KwVersion KeywordA': t.keyword,\n\n IRIRef: t.url,\n 'PNameNS PNameLN': t.namespace,\n\n 'BlankNodeLabel Anon': t.propertyName,\n\n 'String VersionSpecifier': t.string,\n 'Integer Decimal Double': t.number,\n 'True False': t.bool,\n\n LangDir: t.annotation,\n 'Datatype/IRIRef Datatype/PrefixedName/PNameNS Datatype/PrefixedName/PNameLN': t.typeName,\n 'Datatype/\"^^\"': t.typeName,\n\n /*\n * The RDF 1.2 term brackets are tagged apart from ordinary grouping, because\n * `<< s p o >>` and `<<( s p o )>>` differ by one character and mean quite\n * different things — a statement you can refer to, versus an object that *is*\n * a triple. A style that cannot separate them cannot help a reader see that.\n *\n * Each is a `special()` of the standard tag its glyphs actually are, so the\n * fallback chain does the work: a theme that knows nothing about RDF 1.2 and\n * styles `bracket` (or `brace`/`paren`/`angleBracket`) still colours all of\n * them, and one that wants the distinction overrides the specific tag.\n */\n\n /*\n * Every token *inside* an RDF 1.2 nested-triple construct also carries\n * `quote`, so a style can shade the whole thing and not just its brackets —\n * which is what \"colour reified triples differently\" usually means. The\n * `/...` form applies to descendants and *combines* with each token's own\n * tag, so an IRI inside a reified triple is `quote url`, not one or the\n * other. A style that never mentions `quote` sees no change at all.\n *\n * One tag for all three constructs, rather than three: the brackets above\n * already say which kind it is, and a style wanting per-kind regions can add\n * its own props to the exported parser.\n */\n 'ReifiedTriple/... TripleTerm/... NTripleTerm/... AnnotationBlock/...': t.quote,\n\n '\"<<\" \">>\"': t.special(t.angleBracket),\n '\"<<(\" \")>>\"': t.special(t.paren),\n '\"{|\" \"|}\"': t.special(t.brace),\n '\"{\" \"}\"': t.brace,\n '\"[\" \"]\"': t.squareBracket,\n '\"(\" \")\"': t.paren,\n\n // The reifier marker only ever introduces a reifier, so it is worth telling\n // from arithmetic; it falls back to `operator`.\n '\"~\"': t.special(t.operator),\n\n /*\n * RDF Patch. The op codes are keywords. Every token of an `A` or `PA` row also\n * carries `inserted`, and every token of a `D` or `PD` row carries `deleted`,\n * in the same way as `quote` above: a style can colour a patch as a diff, and\n * a style without those tags sees no change.\n */\n 'KwH KwTX KwTC KwTA KwPA KwPD KwA KwD': t.keyword,\n HeaderKey: t.attributeName,\n PatchPrefix: t.namespace,\n 'QuadAdd/... PrefixAdd/...': t.inserted,\n 'QuadDelete/... PrefixDelete/...': t.deleted,\n\n '\";\" \",\"': t.separator,\n '\".\"': t.punctuation,\n});\n","import { syntaxTree } from '@codemirror/language';\nimport type { Completion, CompletionContext, CompletionResult } from '@codemirror/autocomplete';\nimport type { EditorState } from '@codemirror/state';\n\n/** A prefix label (without the colon) mapped to the IRI it expands to. */\nexport type PrefixMap = Record<string, string>;\n\n/** Where `turtle()` and friends may look for prefixes beyond the document. */\nexport type PrefixSource = PrefixMap | ((state: EditorState) => PrefixMap);\n\nexport interface CompletionOptions {\n /**\n * Prefixes the editor should offer even when the document has not declared\n * them — an application's own prefix manager, typically. Document\n * declarations win on conflict, because what the document says is what the\n * document means.\n */\n prefixSource?: PrefixSource;\n}\n\nconst DIRECTIVES = ['@prefix', '@base', 'PREFIX', 'BASE'];\nconst TRIG_DIRECTIVES = [...DIRECTIVES, 'GRAPH'];\nconst TERM_KEYWORDS = ['a', 'true', 'false'];\n\n/** Nodes whose interior is text, not syntax: no completion belongs there. */\nconst INERT = new Set(['Comment', 'String', 'VersionSpecifier', 'IRIRef']);\n\n/**\n * The prefixes declared by the document itself, read from the syntax tree.\n *\n * Both spellings are read — `@prefix ex: <…>` and `PREFIX ex: <…>` — because a\n * document may mix them, and a reader completing `ex:` does not care which one\n * declared it.\n */\nexport function documentPrefixes(state: EditorState): PrefixMap {\n const prefixes: PrefixMap = {};\n const tree = syntaxTree(state);\n tree.iterate({\n enter: (node) => {\n if (node.name !== 'PrefixID' && node.name !== 'SparqlPrefix') return;\n let label: string | null = null;\n let iri: string | null = null;\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name === 'PNameNS' && label === null) {\n label = state.sliceDoc(child.from, child.to).slice(0, -1);\n } else if (child.name === 'IRIRef' && iri === null) {\n iri = state.sliceDoc(child.from + 1, child.to - 1);\n }\n }\n if (label !== null) prefixes[label] = iri ?? '';\n },\n });\n return prefixes;\n}\n\nfunction resolveSource(source: PrefixSource | undefined, state: EditorState): PrefixMap {\n if (!source) return {};\n return typeof source === 'function' ? source(state) : source;\n}\n\n/** Every prefix the editor knows about: the external source, overlaid by the document's. */\nexport function knownPrefixes(state: EditorState, options: CompletionOptions = {}): PrefixMap {\n return { ...resolveSource(options.prefixSource, state), ...documentPrefixes(state) };\n}\n\nfunction prefixCompletions(state: EditorState, options: CompletionOptions): Completion[] {\n const prefixes = knownPrefixes(state, options);\n return Object.entries(prefixes).map(([label, iri]) => ({\n label: `${label}:`,\n type: 'namespace',\n detail: iri || undefined,\n }));\n}\n\nfunction keywordCompletions(words: readonly string[]): Completion[] {\n return words.map((label) => ({ label, type: 'keyword' }));\n}\n\n/**\n * Is the cursor inside a literal or IRI that has not been closed yet?\n *\n * A half-typed `\"some tex` or `<http://ex` never reaches a `String` or\n * `IRIRef` node — it is error debris, and the error node covers only the last\n * word — so the node name cannot answer this. Scanning the line up to the\n * cursor can, and it is the state a reader is in while typing one.\n *\n * Two details earn their place. `<<` is not an IRI, so it does not open one,\n * which keeps completion alive inside a half-typed reified triple. And an IRI\n * cannot contain a space, so whitespace closes the scan rather than\n * suppressing completion for the rest of the line.\n *\n * The scan is line-local, so an unterminated *long* string (`\"\"\"…`) spanning\n * lines is not detected past its first line. Terminated ones are, through the\n * `String` node above.\n */\nfunction inUnterminatedTerm(state: EditorState, pos: number): boolean {\n const line = state.doc.lineAt(pos);\n const text = line.text.slice(0, pos - line.from);\n let quote: string | null = null;\n let angle = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (quote) {\n if (ch === '\\\\') i++;\n else if (ch === quote) quote = null;\n } else if (angle) {\n if (ch === '>' || ch === ' ' || ch === '\\t') angle = false;\n } else if (ch === '\"' || ch === \"'\") {\n quote = ch;\n } else if (ch === '<' && text[i + 1] !== '<') {\n angle = true;\n }\n }\n return quote !== null || angle;\n}\n\n/**\n * Completion for Turtle-family documents.\n *\n * Deliberately context-light: it offers directives, the three term keywords and\n * the document's prefixes wherever a word is being typed, rather than trying to\n * work out whether the cursor is in a subject or an object position. In an\n * error-tolerant tree a half-typed statement usually has no reliable position\n * to read, and a wrong context is worse than a slightly long list.\n */\nexport function turtleCompletionSource(\n options: CompletionOptions = {},\n dialect: 'turtle' | 'trig' = 'turtle'\n) {\n return (context: CompletionContext): CompletionResult | null => {\n const word = context.matchBefore(/[@A-Za-z_][\\w.-]*:?/);\n if (!word && !context.explicit) return null;\n const from = word ? word.from : context.pos;\n\n const node = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (INERT.has(node.name)) return null;\n if (inUnterminatedTerm(context.state, context.pos)) return null;\n\n const directives = dialect === 'trig' ? TRIG_DIRECTIVES : DIRECTIVES;\n return {\n from,\n options: [\n ...keywordCompletions(directives),\n ...keywordCompletions(TERM_KEYWORDS),\n ...prefixCompletions(context.state, options),\n ],\n validFor: /^[@A-Za-z_][\\w.-]*:?$/,\n };\n };\n}\n","import { ensureSyntaxTree } from '@codemirror/language';\nimport { linter } from '@codemirror/lint';\nimport type { EditorState, Extension } from '@codemirror/state';\n\nexport interface ParseError {\n from: number;\n to: number;\n message: string;\n}\n\n/**\n * How long to spend completing the parse before reporting errors. A partial\n * tree ends in error nodes that are not in the document, so nothing is\n * reported until the parse reaches the end.\n */\nconst PARSE_TIMEOUT_MS = 1000;\n\n/** Whitespace and `#` comments: what may separate error nodes in one run. */\nconst GAP = /^(?:\\s|#.*)*$/;\n\n/**\n * Every parse error in the document.\n *\n * The parser recovers by skipping one token at a time, so `this is a test`\n * produces four error nodes. Nodes separated only by whitespace or comments are\n * merged into one error.\n */\nexport function parseErrors(state: EditorState): ParseError[] {\n const tree = ensureSyntaxTree(state, state.doc.length, PARSE_TIMEOUT_MS);\n if (!tree) return [];\n const runs: { from: number; to: number }[] = [];\n tree.iterate({\n enter: (node) => {\n if (!node.type.isError) return;\n const last = runs[runs.length - 1];\n if (last && (node.from <= last.to || GAP.test(state.sliceDoc(last.to, node.from))))\n last.to = Math.max(last.to, node.to);\n else runs.push({ from: node.from, to: node.to });\n },\n });\n return runs.map(({ from, to }) => ({ from, to, message: errorMessage(state.sliceDoc(from, to)) }));\n}\n\nfunction errorMessage(text: string): string {\n const shown = text.replace(/\\s+/g, ' ').trim();\n if (!shown) return 'Syntax error.';\n return `Unexpected “${shown.length > 32 ? `${shown.slice(0, 32)}…` : shown}”.`;\n}\n\n/** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()`, `nquads()` and `rdfPatch()`. */\nexport function parseErrorLinter(): Extension {\n return linter((view) => parseErrors(view.state).map((error) => ({ ...error, severity: 'error' })));\n}\n","import type { SyntaxNode } from '@lezer/common';\nimport type { EditorState } from '@codemirror/state';\nimport {\n LRLanguage,\n LanguageSupport,\n delimitedIndent,\n foldInside,\n foldNodeProp,\n indentNodeProp,\n syntaxTree,\n} from '@codemirror/language';\nimport type { LRParser } from '@lezer/lr';\nimport { parser as rawParser } from './turtle.grammar';\nimport { turtleHighlighting } from './highlight';\nimport { turtleCompletionSource } from './complete';\nimport type { CompletionOptions } from './complete';\nimport { parseErrorLinter } from './lint';\n\nexport type { CompletionOptions, PrefixMap, PrefixSource } from './complete';\nexport { documentPrefixes, knownPrefixes, turtleCompletionSource } from './complete';\nexport { turtleHighlighting } from './highlight';\nexport { parseErrorLinter, parseErrors } from './lint';\nexport type { ParseError } from './lint';\n\n/** The unconfigured grammar, for callers that want their own `top` or props. */\nexport const parser: LRParser = rawParser;\n\n/**\n * Fold a whole statement from the end of its first line.\n *\n * This is the one fold in Turtle with no brackets around it: a subject with a\n * long `;` list is the common shape a reader wants collapsed, and the structure\n * that shape has is a statement, not a delimiter.\n *\n * It stands aside when a bracket opens on the same line. Folding\n * `ex:s ex:p [` at the statement level would hide the `] .` as well, leaving\n * what is left looking unterminated; the bracket's own fold — which CodeMirror\n * would otherwise never reach, since the statement node encloses it — reads\n * correctly.\n */\nconst statementFold = (node: SyntaxNode, state: EditorState) => {\n const firstLineEnd = state.doc.lineAt(node.from).to;\n if (node.to <= firstLineEnd) return null;\n for (let n: SyntaxNode | null = syntaxTree(state).resolveInner(firstLineEnd, -1); n; n = n.parent) {\n if (n.from < node.from) break;\n if (n.type.prop(foldNodeProp) && n.from <= firstLineEnd && n.to > firstLineEnd && n.type !== node.type) return null;\n }\n return { from: firstLineEnd, to: node.to };\n};\n\n/**\n * Fold an RDF Patch transaction from the end of its `TX .` row to the start of\n * its `TC .` or `TA .` row, so both rows stay visible.\n */\nconst transactionFold = (node: SyntaxNode, state: EditorState) => {\n const begin = node.getChild('TxBegin');\n const end = node.getChild('TxCommit') ?? node.getChild('TxAbort');\n if (!begin || !end) return null;\n const from = state.doc.lineAt(begin.to).to;\n const to = state.doc.lineAt(end.from).from - 1;\n return to > from ? { from, to } : null;\n};\n\n/**\n * Highlighting, folding and indentation, shared by all five dialects.\n *\n * Exported so a consumer can re-configure the parser with props of their own —\n * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart\n * rather than all as `quote`. `codemirror-lang-sparql12` exports `sparqlProps`\n * for the same reason.\n */\nexport const turtleProps = [\n turtleHighlighting,\n indentNodeProp.add({\n BlankNodePropertyList: delimitedIndent({ closing: ']' }),\n Collection: delimitedIndent({ closing: ')' }),\n WrappedGraph: delimitedIndent({ closing: '}' }),\n AnnotationBlock: delimitedIndent({ closing: '|}' }),\n TripleTerm: delimitedIndent({ closing: ')>>' }),\n ReifiedTriple: delimitedIndent({ closing: '>>' }),\n }),\n foldNodeProp.add({\n Transaction: transactionFold,\n BlankNodePropertyList: foldInside,\n Collection: foldInside,\n WrappedGraph: foldInside,\n AnnotationBlock: foldInside,\n 'Triples Triples2 TriplesOrGraph': statementFold,\n }),\n];\n\nconst languageData = {\n commentTokens: { line: '#' },\n closeBrackets: { brackets: ['[', '(', '<', '\"', \"'\"] },\n indentOnInput: /^\\s*[\\]})]$/,\n};\n\nconst LANGUAGE_NAMES: Record<string, string> = {\n TurtleDoc: 'turtle',\n TrigDoc: 'trig',\n NTriplesDoc: 'ntriples',\n NQuadsDoc: 'nquads',\n RdfPatchDoc: 'rdfpatch',\n};\n\nfunction define(top: string) {\n return LRLanguage.define({\n name: LANGUAGE_NAMES[top],\n parser: rawParser.configure({ top, props: turtleProps }),\n languageData,\n });\n}\n\nexport const turtleLanguage = define('TurtleDoc');\nexport const trigLanguage = define('TrigDoc');\nexport const ntriplesLanguage = define('NTriplesDoc');\nexport const nquadsLanguage = define('NQuadsDoc');\nexport const rdfPatchLanguage = define('RdfPatchDoc');\n\nfunction support(language: LRLanguage, options: CompletionOptions, dialect: 'turtle' | 'trig') {\n return new LanguageSupport(language, [\n language.data.of({ autocomplete: turtleCompletionSource(options, dialect) }),\n parseErrorLinter(),\n ]);\n}\n\n/** RDF 1.2 Turtle. */\nexport function turtle(options: CompletionOptions = {}): LanguageSupport {\n return support(turtleLanguage, options, 'turtle');\n}\n\n/** RDF 1.2 TriG. */\nexport function trig(options: CompletionOptions = {}): LanguageSupport {\n return support(trigLanguage, options, 'trig');\n}\n\n/**\n * RDF 1.2 N-Triples.\n *\n * A strict subset with its own entry point rather than Turtle in a lenient\n * mood: a prefixed name or a `;` list in an N-Triples document is an error, and\n * an editor that colours it as valid is lying about the file it will write.\n */\nexport function ntriples(): LanguageSupport {\n return new LanguageSupport(ntriplesLanguage, parseErrorLinter());\n}\n\n/** RDF 1.2 N-Quads. */\nexport function nquads(): LanguageSupport {\n return new LanguageSupport(nquadsLanguage, parseErrorLinter());\n}\n\n/**\n * RDF Patch (https://afs.github.io/rdf-delta/rdf-patch.html).\n *\n * Rows take N-Quads terms. `A` and `PA` rows are tagged `inserted`, and `D` and\n * `PD` rows `deleted`, so a style can show a patch as a diff. A transaction\n * folds between its `TX .` and `TC .` rows.\n */\nexport function rdfPatch(): LanguageSupport {\n return new LanguageSupport(rdfPatchLanguage, parseErrorLinter());\n}\n"],"names":["parser","t","rawParser"],"mappings":"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"}
package/dist/lint.d.ts CHANGED
@@ -12,5 +12,5 @@ export interface ParseError {
12
12
  * merged into one error.
13
13
  */
14
14
  export declare function parseErrors(state: EditorState): ParseError[];
15
- /** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()` and `nquads()`. */
15
+ /** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()`, `nquads()` and `rdfPatch()`. */
16
16
  export declare function parseErrorLinter(): Extension;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kurrawongai/codemirror-lang-turtle12",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "RDF 1.2 Turtle, TriG, N-Triples and N-Quads language support for CodeMirror 6",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
package/src/highlight.ts CHANGED
@@ -71,6 +71,18 @@ export const turtleHighlighting: NodePropSource = styleTags({
71
71
  // from arithmetic; it falls back to `operator`.
72
72
  '"~"': t.special(t.operator),
73
73
 
74
+ /*
75
+ * RDF Patch. The op codes are keywords. Every token of an `A` or `PA` row also
76
+ * carries `inserted`, and every token of a `D` or `PD` row carries `deleted`,
77
+ * in the same way as `quote` above: a style can colour a patch as a diff, and
78
+ * a style without those tags sees no change.
79
+ */
80
+ 'KwH KwTX KwTC KwTA KwPA KwPD KwA KwD': t.keyword,
81
+ HeaderKey: t.attributeName,
82
+ PatchPrefix: t.namespace,
83
+ 'QuadAdd/... PrefixAdd/...': t.inserted,
84
+ 'QuadDelete/... PrefixDelete/...': t.deleted,
85
+
74
86
  '";" ","': t.separator,
75
87
  '"."': t.punctuation,
76
88
  });
package/src/index.ts CHANGED
@@ -49,7 +49,20 @@ const statementFold = (node: SyntaxNode, state: EditorState) => {
49
49
  };
50
50
 
51
51
  /**
52
- * Highlighting, folding and indentation, shared by all four dialects.
52
+ * Fold an RDF Patch transaction from the end of its `TX .` row to the start of
53
+ * its `TC .` or `TA .` row, so both rows stay visible.
54
+ */
55
+ const transactionFold = (node: SyntaxNode, state: EditorState) => {
56
+ const begin = node.getChild('TxBegin');
57
+ const end = node.getChild('TxCommit') ?? node.getChild('TxAbort');
58
+ if (!begin || !end) return null;
59
+ const from = state.doc.lineAt(begin.to).to;
60
+ const to = state.doc.lineAt(end.from).from - 1;
61
+ return to > from ? { from, to } : null;
62
+ };
63
+
64
+ /**
65
+ * Highlighting, folding and indentation, shared by all five dialects.
53
66
  *
54
67
  * Exported so a consumer can re-configure the parser with props of their own —
55
68
  * extra `styleTags`, say, to tag the three RDF 1.2 constructs' regions apart
@@ -67,6 +80,7 @@ export const turtleProps = [
67
80
  ReifiedTriple: delimitedIndent({ closing: '>>' }),
68
81
  }),
69
82
  foldNodeProp.add({
83
+ Transaction: transactionFold,
70
84
  BlankNodePropertyList: foldInside,
71
85
  Collection: foldInside,
72
86
  WrappedGraph: foldInside,
@@ -81,9 +95,17 @@ const languageData = {
81
95
  indentOnInput: /^\s*[\]})]$/,
82
96
  };
83
97
 
98
+ const LANGUAGE_NAMES: Record<string, string> = {
99
+ TurtleDoc: 'turtle',
100
+ TrigDoc: 'trig',
101
+ NTriplesDoc: 'ntriples',
102
+ NQuadsDoc: 'nquads',
103
+ RdfPatchDoc: 'rdfpatch',
104
+ };
105
+
84
106
  function define(top: string) {
85
107
  return LRLanguage.define({
86
- name: top === 'TurtleDoc' ? 'turtle' : top === 'TrigDoc' ? 'trig' : top === 'NTriplesDoc' ? 'ntriples' : 'nquads',
108
+ name: LANGUAGE_NAMES[top],
87
109
  parser: rawParser.configure({ top, props: turtleProps }),
88
110
  languageData,
89
111
  });
@@ -93,6 +115,7 @@ export const turtleLanguage = define('TurtleDoc');
93
115
  export const trigLanguage = define('TrigDoc');
94
116
  export const ntriplesLanguage = define('NTriplesDoc');
95
117
  export const nquadsLanguage = define('NQuadsDoc');
118
+ export const rdfPatchLanguage = define('RdfPatchDoc');
96
119
 
97
120
  function support(language: LRLanguage, options: CompletionOptions, dialect: 'turtle' | 'trig') {
98
121
  return new LanguageSupport(language, [
@@ -126,3 +149,14 @@ export function ntriples(): LanguageSupport {
126
149
  export function nquads(): LanguageSupport {
127
150
  return new LanguageSupport(nquadsLanguage, parseErrorLinter());
128
151
  }
152
+
153
+ /**
154
+ * RDF Patch (https://afs.github.io/rdf-delta/rdf-patch.html).
155
+ *
156
+ * Rows take N-Quads terms. `A` and `PA` rows are tagged `inserted`, and `D` and
157
+ * `PD` rows `deleted`, so a style can show a patch as a diff. A transaction
158
+ * folds between its `TX .` and `TC .` rows.
159
+ */
160
+ export function rdfPatch(): LanguageSupport {
161
+ return new LanguageSupport(rdfPatchLanguage, parseErrorLinter());
162
+ }
package/src/lint.ts CHANGED
@@ -47,7 +47,7 @@ function errorMessage(text: string): string {
47
47
  return `Unexpected “${shown.length > 32 ? `${shown.slice(0, 32)}…` : shown}”.`;
48
48
  }
49
49
 
50
- /** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()` and `nquads()`. */
50
+ /** Underline every parse error. Included in `turtle()`, `trig()`, `ntriples()`, `nquads()` and `rdfPatch()`. */
51
51
  export function parseErrorLinter(): Extension {
52
52
  return linter((view) => parseErrors(view.state).map((error) => ({ ...error, severity: 'error' })));
53
53
  }
Binary file