occam-grammars 1.3.306 → 1.3.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/example.js +153 -88
  2. package/index.html +1 -1
  3. package/lib/customGrammarBNF/bnf.js +14 -0
  4. package/lib/customGrammarBNF/entries.js +30 -0
  5. package/lib/customGrammarBNF/lexer.js +9 -4
  6. package/lib/customGrammarBNF/parser.js +8 -3
  7. package/lib/customGrammarVocabulary/bnf.js +14 -0
  8. package/lib/customGrammarVocabulary/entries.js +18 -0
  9. package/lib/customGrammarVocabulary/lexer.js +144 -0
  10. package/lib/{customGrammarPattern → customGrammarVocabulary}/parser.js +13 -13
  11. package/lib/example/view/{customGrammarPattern.js → customGrammarVocabulary.js} +14 -14
  12. package/lib/example.js +4 -4
  13. package/lib/index.js +5 -5
  14. package/lib/nominal/bnf.js +2 -2
  15. package/lib/nominal/entries.js +11 -8
  16. package/package.json +1 -1
  17. package/src/customGrammarBNF/bnf.js +75 -0
  18. package/src/customGrammarBNF/entries.js +21 -0
  19. package/src/customGrammarBNF/lexer.js +3 -3
  20. package/src/customGrammarBNF/parser.js +2 -2
  21. package/src/customGrammarVocabulary/bnf.js +19 -0
  22. package/src/{customGrammarPattern → customGrammarVocabulary}/lexer.js +4 -4
  23. package/src/{customGrammarPattern → customGrammarVocabulary}/parser.js +4 -4
  24. package/src/example/view/customGrammarVocabulary.js +22 -0
  25. package/src/example.js +2 -2
  26. package/src/index.js +2 -2
  27. package/src/nominal/bnf.js +3 -3
  28. package/src/nominal/entries.js +11 -7
  29. package/lib/customGrammarPattern/bnf.js +0 -14
  30. package/lib/customGrammarPattern/entries.js +0 -18
  31. package/lib/customGrammarPattern/lexer.js +0 -144
  32. package/src/customGrammarPattern/bnf.js +0 -16
  33. package/src/example/view/customGrammarPattern.js +0 -22
  34. /package/src/{customGrammarPattern → customGrammarVocabulary}/entries.js +0 -0
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var bnf = 'document ::= ( topLevelDeclaration | topLevelAssertion | section | verticalSpace | error )+ ;\n\n\n\ntopLevelDeclaration ::= variableDeclaration \n \n | combinatorDeclaration \n \n | constructorDeclaration \n \n | metavariableDeclaration \n \n | simpleTypeDeclaration \n \n | complexTypeDeclaration \n \n ;\n\n\n\ntopLevelAssertion ::= rule \n\n | axiom \n\n | lemma \n\n | theorem \n\n | conjecture \n\n | metaLemma \n\n | metatheorem \n\n ;\n\n\n\nsection ::= "Given" <END_OF_LINE>\n\n hypothesis+\n \n <END_OF_LINE>\n \n ( axiom \n \n | lemma \n \n | theorem \n \n | conjecture ) ; \n\n\n\nverticalSpace ::= <END_OF_LINE>+ ;\n\n\n\nerror. ::= . ;\n\n\n\nvariableDeclaration ::= "Variable" variable ( ":" type "provisionally"? )? <END_OF_LINE> ;\n \ncombinatorDeclaration ::= "Combinator" statement... <END_OF_LINE> ;\n \nconstructorDeclaration ::= "Constructor" term... ( ":" type "provisionally"? )? <END_OF_LINE> ;\n \nmetavariableDeclaration ::= "Metavariable" metavariable... ":" metaType <END_OF_LINE> ;\n \nsimpleTypeDeclaration ::= "Provisional"? "Type" type ( ":" types )? <END_OF_LINE> ;\n \ncomplexTypeDeclaration ::= "Provisional"? "Type" <END_OF_LINE> \n\n type ( ":" types )? <END_OF_LINE>\n \n (\n \n ( "Properties" <END_OF_LINE> propertyDeclaration propertyDeclaration+ ) \n \n | \n \n ( "Property" <END_OF_LINE> propertyDeclaration ) \n \n );\n \n\n \nrule ::= ruleHeading ruleBody ; \n\nmetaLemma ::= metaLemmaHeading metaLemmaBody ;\n\nmetatheorem ::= metatheoremHeading metatheoremBody ;\n\naxiom ::= axiomHeading axiomBody ;\n\nlemma ::= lemmaHeading lemmaBody ;\n\ntheorem ::= theoremHeading theoremBody ;\n\nconjecture ::= conjectureHeading conjectureBody ;\n\n\n\nruleHeading ::= "Rule" parenthesisedLabels... <END_OF_LINE> ; \n\nmetaLemmaHeading ::= "MetaLemma" parenthesisedLabel... <END_OF_LINE> | "MetaLemma" <END_OF_LINE> ;\n\nmetatheoremHeading ::= "Metatheorem" parenthesisedLabel... <END_OF_LINE> ; \n\naxiomHeading ::= "Axiom" signature? parenthesisedLabels... <END_OF_LINE> ; \n\nlemmaHeading ::= "Lemma" parenthesisedLabels... <END_OF_LINE> | "Lemma" <END_OF_LINE> ; \n\ntheoremHeading ::= "Theorem" parenthesisedLabels... <END_OF_LINE> ; \n\nconjectureHeading ::= "Conjecture" parenthesisedLabels... <END_OF_LINE>\n\n\n\nruleBody ::= ( \n\n ( "Premises" <END_OF_LINE> premise premise+ ) \n \n | \n \n ( "Premise" <END_OF_LINE> premise ) \n \n )?\n \n "Conclusion" <END_OF_LINE> conclusion \n \n proof? ; \n\nmetaLemmaBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+ \n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\nmetatheoremBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+ \n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\naxiomBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n \n "Then" <END_OF_LINE> \n \n )?\n \n deduction ;\n\nlemmaBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\ntheoremBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\nconjectureBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof? ;\n\n\n\nproof ::= "Proof" <END_OF_LINE> derivation ;\n\nsubproof ::= "Suppose" <END_OF_LINE> supposition+ subDerivation ;\n\nderivation ::= ( \n\n ( step | subproof )+ \n \n "Therefore" <END_OF_LINE> \n \n )? \n \n step ; \n\nsubDerivation ::= (\n\n "Hence" <END_OF_LINE>\n \n ( step | subproof )+ \n \n )? \n \n "Then" <END_OF_LINE> \n \n step ; \n\n\n\npropertyDeclaration. ::= property ( ":" type )? <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\n\n\npremise. ::= procedureCall... <END_OF_LINE> \n\n | statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nsupposition. ::= procedureCall... <END_OF_LINE> \n\n | statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nconclusion. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\ndeduction. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nhypothesis. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\n\n\nstep. ::= statement... qualification? <END_OF_LINE> \n\n | nonsense... qualification? <END_OF_LINE>\n \n ;\n\n\n\nqualification ::= "because" satisfiesAssertion\n\n | "by" reference\n \n ; \n\n\n\nparenthesisedLabels ::= "(" labels ")" ; \n\nparenthesisedLabel ::= "(" label ")" ; \n\n\n\nprocedureCall ::= "@"<NO_WHITESPACE>reference<NO_WHITESPACE>"(" parameter ( "," parameter )* ")" ;\n\n\n\nsignature ::= "[" term ( "," term )* "]" ;\n\n\n\narguments ::= argument ( "," argument )* ;\n\nlabels ::= label ( "," label )* ;\n\ntypes ::= type ( "," type )* ;\n\n\n\nargument ::= term ( ) \n\n | type ( )\n \n | stuff\n\n ;\n\nmetaArgument ::= statement ( ) \n\n | metaType ( ) \n \n ;\n\nframeArgument ::= frame ( ) \n\n | metaType ( ) \n \n ;\n\n\n\nreference. ::= metavariable ;\n\nlabel. ::= metavariable ;\n\n\n\nmetavariable. ::= [identifier] ( <NO_WHITESPACE> "(" argument ")" )? ;\n\nparameter. ::= [identifier] ;\n\nvariable. ::= [identifier] ;\n\nproperty. ::= [identifier]+ ;\n\nmetaType. ::= [meta-type] ;\n\ntype. ::= [type] ;\n\n\n\nstuff. ::= ( [type] | [symbol] | [bracket] | [reserved] | [identifier] | [unassigned] )+ ;\n\nnonsense. ::= ( [special] | [meta-type] | [secondary-keyword] | [type] | [symbol] | [bracket] | [reserved] | [identifier] | [unassigned] )+ ;';
11
+ var bnf = 'document ::= ( topLevelDeclaration | topLevelAssertion | section | verticalSpace | error )+ ;\n\n\n\ntopLevelDeclaration ::= variableDeclaration \n \n | combinatorDeclaration \n \n | constructorDeclaration \n \n | metavariableDeclaration \n \n | simpleTypeDeclaration \n \n | complexTypeDeclaration \n \n ;\n\n\n\ntopLevelAssertion ::= rule \n\n | axiom \n\n | lemma \n\n | theorem \n\n | conjecture \n\n | metaLemma \n\n | metatheorem \n\n ;\n\n\n\nsection ::= "Given" <END_OF_LINE>\n\n hypothesis+\n \n <END_OF_LINE>\n \n ( axiom \n \n | lemma \n \n | theorem \n \n | conjecture ) ; \n\n\n\nverticalSpace ::= <END_OF_LINE>+ ;\n\n\n\nerror. ::= . ;\n\n\n\nvariableDeclaration ::= "Variable" variable ( ":" type "provisionally"? )? <END_OF_LINE> ;\n \ncombinatorDeclaration ::= "Combinator" statement... <END_OF_LINE> ;\n \nconstructorDeclaration ::= "Constructor" term... ( ":" type "provisionally"? )? <END_OF_LINE> ;\n \nmetavariableDeclaration ::= "Metavariable" metavariable... ":" metaType <END_OF_LINE> ;\n \nsimpleTypeDeclaration ::= "Provisional"? "Type" type ( ":" types )? <END_OF_LINE> ;\n \ncomplexTypeDeclaration ::= "Provisional"? "Type" <END_OF_LINE> \n\n type ( ":" types )? <END_OF_LINE>\n \n (\n \n ( "Properties" <END_OF_LINE> propertyDeclaration propertyDeclaration+ ) \n \n | \n \n ( "Property" <END_OF_LINE> propertyDeclaration ) \n \n );\n \n\n \nrule ::= ruleHeading ruleBody ; \n\nmetaLemma ::= metaLemmaHeading metaLemmaBody ;\n\nmetatheorem ::= metatheoremHeading metatheoremBody ;\n\naxiom ::= axiomHeading axiomBody ;\n\nlemma ::= lemmaHeading lemmaBody ;\n\ntheorem ::= theoremHeading theoremBody ;\n\nconjecture ::= conjectureHeading conjectureBody ;\n\n\n\nruleHeading ::= "Rule" parenthesisedLabels... <END_OF_LINE> ; \n\nmetaLemmaHeading ::= "MetaLemma" parenthesisedLabel... <END_OF_LINE> | "MetaLemma" <END_OF_LINE> ;\n\nmetatheoremHeading ::= "Metatheorem" parenthesisedLabel... <END_OF_LINE> ; \n\naxiomHeading ::= "Axiom" signature? parenthesisedLabels... <END_OF_LINE> ; \n\nlemmaHeading ::= "Lemma" parenthesisedLabels... <END_OF_LINE> | "Lemma" <END_OF_LINE> ; \n\ntheoremHeading ::= "Theorem" parenthesisedLabels... <END_OF_LINE> ; \n\nconjectureHeading ::= "Conjecture" parenthesisedLabels... <END_OF_LINE>\n\n\n\nruleBody ::= ( \n\n ( "Premises" <END_OF_LINE> premise premise+ ) \n \n | \n \n ( "Premise" <END_OF_LINE> premise ) \n \n )?\n \n "Conclusion" <END_OF_LINE> conclusion \n \n proof? ; \n\nmetaLemmaBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+ \n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\nmetatheoremBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+ \n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\naxiomBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n \n "Then" <END_OF_LINE> \n \n )?\n \n deduction ;\n\nlemmaBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\ntheoremBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof ;\n\nconjectureBody ::= (\n \n "Suppose" <END_OF_LINE> supposition+\n\n "Then" <END_OF_LINE> \n \n )?\n \n deduction\n \n proof? ;\n\n\n\nproof ::= "Proof" <END_OF_LINE> derivation ;\n\nsubproof ::= "Suppose" <END_OF_LINE> supposition+ subDerivation ;\n\nderivation ::= ( \n\n ( step | subproof )+ \n \n "Therefore" <END_OF_LINE> \n \n )? \n \n step ; \n\nsubDerivation ::= (\n\n "Hence" <END_OF_LINE>\n \n ( step | subproof )+ \n \n )? \n \n "Then" <END_OF_LINE> \n \n step ; \n\n\n\npropertyDeclaration. ::= property ( ":" type )? <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\n\n\npremise. ::= procedureCall... <END_OF_LINE> \n\n | statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nsupposition. ::= procedureCall... <END_OF_LINE> \n\n | statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nconclusion. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\ndeduction. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\nhypothesis. ::= statement... <END_OF_LINE> \n\n | nonsense... <END_OF_LINE>\n \n ;\n\n\n\nstep. ::= statement... qualification? <END_OF_LINE> \n\n | nonsense... qualification? <END_OF_LINE>\n \n ;\n\n\n\nqualification ::= "because" satisfiesAssertion\n\n | "by" reference\n \n ; \n\n\n\nparenthesisedLabels ::= "(" labels ")" ; \n\nparenthesisedLabel ::= "(" label ")" ; \n\n\n\nprocedureCall ::= "@"<NO_WHITESPACE>reference<NO_WHITESPACE>"(" parameter ( "," parameter )* ")" ;\n\n\n\nsignature ::= "[" term ( "," term )* "]" ;\n\n\n\narguments ::= argument ( "," argument )* ;\n\nlabels ::= label ( "," label )* ;\n\ntypes ::= type ( "," type )* ;\n\n\n\nargument ::= term ( ) \n\n | type ( )\n \n | stuff\n\n ;\n\nmetaArgument ::= statement ( ) \n\n | metaType ( ) \n \n ;\n\nframeArgument ::= frame ( ) \n\n | metaType ( ) \n \n ;\n\n\n\nreference. ::= metavariable ;\n\nlabel. ::= metavariable ;\n\n\n\nmetavariable. ::= [name] ( <NO_WHITESPACE> "(" argument ")" )? ;\n\nparameter. ::= [identifier] ;\n\nvariable. ::= [identifier] ;\n\nproperty. ::= [identifier]+ ;\n\nmetaType. ::= [meta-type] ;\n\ntype. ::= [type] ;\n\n\n\nstuff. ::= ( [type] | [symbol] | [name] | [identifier] | [bracket] | [reserved] | [unassigned] )+ ;\n\nnonsense. ::= ( [special] | [meta-type] | [secondary-keyword] | [type] | [symbol] | [name] | [identifier] | [bracket] | [reserved] | [unassigned] )+ ;';
12
12
  var _default = bnf;
13
13
 
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub21pbmFsL2JuZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuY29uc3QgYm5mID0gYGRvY3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gICggdG9wTGV2ZWxEZWNsYXJhdGlvbiB8IHRvcExldmVsQXNzZXJ0aW9uIHwgc2VjdGlvbiB8IHZlcnRpY2FsU3BhY2UgfCBlcnJvciApKyA7XG5cblxuXG50b3BMZXZlbERlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZURlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29tYmluYXRvckRlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29uc3RydWN0b3JEZWNsYXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbXBsZXhUeXBlRGVjbGFyYXRpb24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG50b3BMZXZlbEFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgOjo9ICBydWxlIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBheGlvbSBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbGVtbWEgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHRoZW9yZW0gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbmplY3R1cmUgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFMZW1tYSBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbWV0YXRoZW9yZW0gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbnNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiR2l2ZW5cIiA8RU5EX09GX0xJTkU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXMrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFTkRfT0ZfTElORT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBheGlvbSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZW1tYSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGVvcmVtIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmplY3R1cmUgKSA7IFxuXG5cblxudmVydGljYWxTcGFjZSAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgPEVORF9PRl9MSU5FPisgO1xuXG5cblxuZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgLiA7XG5cblxuXG52YXJpYWJsZURlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgOjo9ICBcIlZhcmlhYmxlXCIgdmFyaWFibGUgKCBcIjpcIiB0eXBlIFwicHJvdmlzaW9uYWxseVwiPyApPyA8RU5EX09GX0xJTkU+IDtcbiBcbmNvbWJpbmF0b3JEZWNsYXJhdGlvbiAgICAgICAgICAgICAgICA6Oj0gIFwiQ29tYmluYXRvclwiIHN0YXRlbWVudC4uLiA8RU5EX09GX0xJTkU+IDtcbiBcbmNvbnN0cnVjdG9yRGVjbGFyYXRpb24gICAgICAgICAgICAgICA6Oj0gIFwiQ29uc3RydWN0b3JcIiB0ZXJtLi4uICggXCI6XCIgdHlwZSBcInByb3Zpc2lvbmFsbHlcIj8gKT8gPEVORF9PRl9MSU5FPiA7XG4gXG5tZXRhdmFyaWFibGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgOjo9ICBcIk1ldGF2YXJpYWJsZVwiIG1ldGF2YXJpYWJsZS4uLiBcIjpcIiBtZXRhVHlwZSA8RU5EX09GX0xJTkU+IDtcbiBcbnNpbXBsZVR5cGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgICA6Oj0gIFwiUHJvdmlzaW9uYWxcIj8gXCJUeXBlXCIgdHlwZSAoIFwiOlwiIHR5cGVzICk/IDxFTkRfT0ZfTElORT4gO1xuIFxuY29tcGxleFR5cGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgIDo6PSAgXCJQcm92aXNpb25hbFwiPyBcIlR5cGVcIiA8RU5EX09GX0xJTkU+IFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICggXCI6XCIgdHlwZXMgKT8gPEVORF9PRl9MSU5FPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIlByb3BlcnRpZXNcIiA8RU5EX09GX0xJTkU+IHByb3BlcnR5RGVjbGFyYXRpb24gcHJvcGVydHlEZWNsYXJhdGlvbisgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJQcm9wZXJ0eVwiIDxFTkRfT0ZfTElORT4gcHJvcGVydHlEZWNsYXJhdGlvbiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuIFxuXG4gIFxucnVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcnVsZUhlYWRpbmcgcnVsZUJvZHkgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbm1ldGFMZW1tYSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIG1ldGFMZW1tYUhlYWRpbmcgbWV0YUxlbW1hQm9keSA7XG5cbm1ldGF0aGVvcmVtICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIG1ldGF0aGVvcmVtSGVhZGluZyBtZXRhdGhlb3JlbUJvZHkgO1xuXG5heGlvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBheGlvbUhlYWRpbmcgYXhpb21Cb2R5IDtcblxubGVtbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbGVtbWFIZWFkaW5nIGxlbW1hQm9keSA7XG5cbnRoZW9yZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRoZW9yZW1IZWFkaW5nIHRoZW9yZW1Cb2R5IDtcblxuY29uamVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgY29uamVjdHVyZUhlYWRpbmcgY29uamVjdHVyZUJvZHkgO1xuXG5cblxucnVsZUhlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJSdWxlXCIgcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+IDsgXG5cbm1ldGFMZW1tYUhlYWRpbmcgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiTWV0YUxlbW1hXCIgcGFyZW50aGVzaXNlZExhYmVsLi4uIDxFTkRfT0ZfTElORT4gfCBcIk1ldGFMZW1tYVwiIDxFTkRfT0ZfTElORT4gO1xuXG5tZXRhdGhlb3JlbUhlYWRpbmcgICAgICAgICAgICAgICAgICAgOjo9ICBcIk1ldGF0aGVvcmVtXCIgcGFyZW50aGVzaXNlZExhYmVsLi4uIDxFTkRfT0ZfTElORT4gOyBcblxuYXhpb21IZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJBeGlvbVwiIHNpZ25hdHVyZT8gcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+IDsgXG5cbmxlbW1hSGVhZGluZyAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiTGVtbWFcIiBwYXJlbnRoZXNpc2VkTGFiZWxzLi4uIDxFTkRfT0ZfTElORT4gfCBcIkxlbW1hXCIgPEVORF9PRl9MSU5FPiA7IFxuXG50aGVvcmVtSGVhZGluZyAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIlRoZW9yZW1cIiBwYXJlbnRoZXNpc2VkTGFiZWxzLi4uIDxFTkRfT0ZfTElORT4gOyBcblxuY29uamVjdHVyZUhlYWRpbmcgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJDb25qZWN0dXJlXCIgcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+XG5cblxuXG5ydWxlQm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJQcmVtaXNlc1wiIDxFTkRfT0ZfTElORT4gcHJlbWlzZSBwcmVtaXNlKyApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIlByZW1pc2VcIiA8RU5EX09GX0xJTkU+IHByZW1pc2UgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb25jbHVzaW9uXCIgPEVORF9PRl9MSU5FPiBjb25jbHVzaW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2Y/IDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5tZXRhTGVtbWFCb2R5ICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2YgO1xuXG5tZXRhdGhlb3JlbUJvZHkgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9vZiA7XG5cbmF4aW9tQm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdXBwb3NlXCIgPEVORF9PRl9MSU5FPiBzdXBwb3NpdGlvbitcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y3Rpb24gO1xuXG5sZW1tYUJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb29mIDtcblxudGhlb3JlbUJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN1cHBvc2VcIiA8RU5EX09GX0xJTkU+IHN1cHBvc2l0aW9uK1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2YgO1xuXG5jb25qZWN0dXJlQm9keSAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9vZj8gO1xuXG5cblxucHJvb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJQcm9vZlwiIDxFTkRfT0ZfTElORT4gZGVyaXZhdGlvbiA7XG5cbnN1YnByb29mICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIHN1YkRlcml2YXRpb24gO1xuXG5kZXJpdmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcCB8IHN1YnByb29mICkrIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVyZWZvcmVcIiA8RU5EX09GX0xJTkU+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbnN1YkRlcml2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIChcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkhlbmNlXCIgPEVORF9PRl9MSU5FPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXAgfCBzdWJwcm9vZiApKyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cblxuXG5wcm9wZXJ0eURlY2xhcmF0aW9uLiAgICAgICAgICAgICAgICAgOjo9ICBwcm9wZXJ0eSAoIFwiOlwiIHR5cGUgKT8gPEVORF9PRl9MSU5FPiAgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5vbnNlbnNlLi4uIDxFTkRfT0ZfTElORT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cblxucHJlbWlzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcHJvY2VkdXJlQ2FsbC4uLiA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuc3VwcG9zaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcHJvY2VkdXJlQ2FsbC4uLiA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuY29uY2x1c2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuZGVkdWN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuaHlwb3RoZXNpcy4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbnN0ZXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHN0YXRlbWVudC4uLiBxdWFsaWZpY2F0aW9uPyA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbm9uc2Vuc2UuLi4gcXVhbGlmaWNhdGlvbj8gPEVORF9PRl9MSU5FPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5xdWFsaWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcImJlY2F1c2VcIiBzYXRpc2ZpZXNBc3NlcnRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgXCJieVwiIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IFxuXG5cblxucGFyZW50aGVzaXNlZExhYmVscyAgICAgICAgICAgICAgICAgIDo6PSAgXCIoXCIgbGFiZWxzIFwiKVwiIDsgXG5cbnBhcmVudGhlc2lzZWRMYWJlbCAgICAgICAgICAgICAgICAgICA6Oj0gIFwiKFwiIGxhYmVsIFwiKVwiIDsgXG5cblxuXG5wcm9jZWR1cmVDYWxsICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIkBcIjxOT19XSElURVNQQUNFPnJlZmVyZW5jZTxOT19XSElURVNQQUNFPlwiKFwiIHBhcmFtZXRlciAoIFwiLFwiIHBhcmFtZXRlciApKiBcIilcIiA7XG5cblxuXG5zaWduYXR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIltcIiB0ZXJtICggXCIsXCIgdGVybSApKiBcIl1cIiA7XG5cblxuXG5hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBhcmd1bWVudCAoIFwiLFwiIGFyZ3VtZW50ICkqIDtcblxubGFiZWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbGFiZWwgKCBcIixcIiBsYWJlbCApKiA7XG5cbnR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHR5cGUgKCBcIixcIiB0eXBlICkqIDtcblxuXG5cbmFyZ3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRlcm0gKCApIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB0eXBlICggKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBzdHVmZlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cbm1ldGFBcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHN0YXRlbWVudCAoICkgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFUeXBlICggKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5mcmFtZUFyZ3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBmcmFtZSAoICkgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFUeXBlICggKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cblxucmVmZXJlbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbWV0YXZhcmlhYmxlIDtcblxubGFiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbWV0YXZhcmlhYmxlIDtcblxuXG5cbm1ldGF2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSAoIDxOT19XSElURVNQQUNFPiBcIihcIiBhcmd1bWVudCBcIilcIiApPyA7XG5cbnBhcmFtZXRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSA7XG5cbnZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSA7XG5cbnByb3BlcnR5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSsgO1xuXG5tZXRhVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBbbWV0YS10eXBlXSA7XG5cbnR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFt0eXBlXSA7XG5cblxuXG5zdHVmZi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFt0eXBlXSB8IFtzeW1ib2xdIHwgW2JyYWNrZXRdIHwgW3Jlc2VydmVkXSB8IFtpZGVudGlmaWVyXSB8IFt1bmFzc2lnbmVkXSApKyA7XG5cbm5vbnNlbnNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gICggW3NwZWNpYWxdIHwgW21ldGEtdHlwZV0gfCBbc2Vjb25kYXJ5LWtleXdvcmRdIHwgW3R5cGVdIHwgW3N5bWJvbF0gfCBbYnJhY2tldF0gfCBbcmVzZXJ2ZWRdIHwgW2lkZW50aWZpZXJdIHwgW3VuYXNzaWduZWRdICkrIDtgO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0V0E7OztlQUFBOzs7QUExV0EsSUFBTUEsTUFBTztJQTBXYixXQUFlQSJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub21pbmFsL2JuZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuY29uc3QgYm5mID0gYGRvY3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gICggdG9wTGV2ZWxEZWNsYXJhdGlvbiB8IHRvcExldmVsQXNzZXJ0aW9uIHwgc2VjdGlvbiB8IHZlcnRpY2FsU3BhY2UgfCBlcnJvciApKyA7XG5cblxuXG50b3BMZXZlbERlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgOjo9ICB2YXJpYWJsZURlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29tYmluYXRvckRlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgY29uc3RydWN0b3JEZWNsYXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHNpbXBsZVR5cGVEZWNsYXJhdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbXBsZXhUeXBlRGVjbGFyYXRpb24gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG50b3BMZXZlbEFzc2VydGlvbiAgICAgICAgICAgICAgICAgICAgOjo9ICBydWxlIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBheGlvbSBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbGVtbWEgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHRoZW9yZW0gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbmplY3R1cmUgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFMZW1tYSBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbWV0YXRoZW9yZW0gXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbnNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiR2l2ZW5cIiA8RU5EX09GX0xJTkU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXMrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFTkRfT0ZfTElORT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBheGlvbSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsZW1tYSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGVvcmVtIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmplY3R1cmUgKSA7IFxuXG5cblxudmVydGljYWxTcGFjZSAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgPEVORF9PRl9MSU5FPisgO1xuXG5cblxuZXJyb3IuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgLiA7XG5cblxuXG52YXJpYWJsZURlY2xhcmF0aW9uICAgICAgICAgICAgICAgICAgOjo9ICBcIlZhcmlhYmxlXCIgdmFyaWFibGUgKCBcIjpcIiB0eXBlIFwicHJvdmlzaW9uYWxseVwiPyApPyA8RU5EX09GX0xJTkU+IDtcbiBcbmNvbWJpbmF0b3JEZWNsYXJhdGlvbiAgICAgICAgICAgICAgICA6Oj0gIFwiQ29tYmluYXRvclwiIHN0YXRlbWVudC4uLiA8RU5EX09GX0xJTkU+IDtcbiBcbmNvbnN0cnVjdG9yRGVjbGFyYXRpb24gICAgICAgICAgICAgICA6Oj0gIFwiQ29uc3RydWN0b3JcIiB0ZXJtLi4uICggXCI6XCIgdHlwZSBcInByb3Zpc2lvbmFsbHlcIj8gKT8gPEVORF9PRl9MSU5FPiA7XG4gXG5tZXRhdmFyaWFibGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgOjo9ICBcIk1ldGF2YXJpYWJsZVwiIG1ldGF2YXJpYWJsZS4uLiBcIjpcIiBtZXRhVHlwZSA8RU5EX09GX0xJTkU+IDtcbiBcbnNpbXBsZVR5cGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgICA6Oj0gIFwiUHJvdmlzaW9uYWxcIj8gXCJUeXBlXCIgdHlwZSAoIFwiOlwiIHR5cGVzICk/IDxFTkRfT0ZfTElORT4gO1xuIFxuY29tcGxleFR5cGVEZWNsYXJhdGlvbiAgICAgICAgICAgICAgIDo6PSAgXCJQcm92aXNpb25hbFwiPyBcIlR5cGVcIiA8RU5EX09GX0xJTkU+IFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICggXCI6XCIgdHlwZXMgKT8gPEVORF9PRl9MSU5FPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIlByb3BlcnRpZXNcIiA8RU5EX09GX0xJTkU+IHByb3BlcnR5RGVjbGFyYXRpb24gcHJvcGVydHlEZWNsYXJhdGlvbisgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJQcm9wZXJ0eVwiIDxFTkRfT0ZfTElORT4gcHJvcGVydHlEZWNsYXJhdGlvbiApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuIFxuXG4gIFxucnVsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcnVsZUhlYWRpbmcgcnVsZUJvZHkgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbm1ldGFMZW1tYSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIG1ldGFMZW1tYUhlYWRpbmcgbWV0YUxlbW1hQm9keSA7XG5cbm1ldGF0aGVvcmVtICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIG1ldGF0aGVvcmVtSGVhZGluZyBtZXRhdGhlb3JlbUJvZHkgO1xuXG5heGlvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBheGlvbUhlYWRpbmcgYXhpb21Cb2R5IDtcblxubGVtbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbGVtbWFIZWFkaW5nIGxlbW1hQm9keSA7XG5cbnRoZW9yZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRoZW9yZW1IZWFkaW5nIHRoZW9yZW1Cb2R5IDtcblxuY29uamVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgY29uamVjdHVyZUhlYWRpbmcgY29uamVjdHVyZUJvZHkgO1xuXG5cblxucnVsZUhlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJSdWxlXCIgcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+IDsgXG5cbm1ldGFMZW1tYUhlYWRpbmcgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiTWV0YUxlbW1hXCIgcGFyZW50aGVzaXNlZExhYmVsLi4uIDxFTkRfT0ZfTElORT4gfCBcIk1ldGFMZW1tYVwiIDxFTkRfT0ZfTElORT4gO1xuXG5tZXRhdGhlb3JlbUhlYWRpbmcgICAgICAgICAgICAgICAgICAgOjo9ICBcIk1ldGF0aGVvcmVtXCIgcGFyZW50aGVzaXNlZExhYmVsLi4uIDxFTkRfT0ZfTElORT4gOyBcblxuYXhpb21IZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJBeGlvbVwiIHNpZ25hdHVyZT8gcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+IDsgXG5cbmxlbW1hSGVhZGluZyAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiTGVtbWFcIiBwYXJlbnRoZXNpc2VkTGFiZWxzLi4uIDxFTkRfT0ZfTElORT4gfCBcIkxlbW1hXCIgPEVORF9PRl9MSU5FPiA7IFxuXG50aGVvcmVtSGVhZGluZyAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIlRoZW9yZW1cIiBwYXJlbnRoZXNpc2VkTGFiZWxzLi4uIDxFTkRfT0ZfTElORT4gOyBcblxuY29uamVjdHVyZUhlYWRpbmcgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJDb25qZWN0dXJlXCIgcGFyZW50aGVzaXNlZExhYmVscy4uLiA8RU5EX09GX0xJTkU+XG5cblxuXG5ydWxlQm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJQcmVtaXNlc1wiIDxFTkRfT0ZfTElORT4gcHJlbWlzZSBwcmVtaXNlKyApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIlByZW1pc2VcIiA8RU5EX09GX0xJTkU+IHByZW1pc2UgKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJDb25jbHVzaW9uXCIgPEVORF9PRl9MSU5FPiBjb25jbHVzaW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2Y/IDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG5tZXRhTGVtbWFCb2R5ICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2YgO1xuXG5tZXRhdGhlb3JlbUJvZHkgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9vZiA7XG5cbmF4aW9tQm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdXBwb3NlXCIgPEVORF9PRl9MSU5FPiBzdXBwb3NpdGlvbitcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y3Rpb24gO1xuXG5sZW1tYUJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWR1Y3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb29mIDtcblxudGhlb3JlbUJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlN1cHBvc2VcIiA8RU5EX09GX0xJTkU+IHN1cHBvc2l0aW9uK1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZHVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvb2YgO1xuXG5jb25qZWN0dXJlQm9keSAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVuXCIgPEVORF9PRl9MSU5FPiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9vZj8gO1xuXG5cblxucHJvb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgXCJQcm9vZlwiIDxFTkRfT0ZfTElORT4gZGVyaXZhdGlvbiA7XG5cbnN1YnByb29mICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFwiU3VwcG9zZVwiIDxFTkRfT0ZfTElORT4gc3VwcG9zaXRpb24rIHN1YkRlcml2YXRpb24gO1xuXG5kZXJpdmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggc3RlcCB8IHN1YnByb29mICkrIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGVyZWZvcmVcIiA8RU5EX09GX0xJTkU+IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk/IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbnN1YkRlcml2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIChcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkhlbmNlXCIgPEVORF9PRl9MSU5FPlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXAgfCBzdWJwcm9vZiApKyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlblwiIDxFTkRfT0ZfTElORT4gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cblxuXG5wcm9wZXJ0eURlY2xhcmF0aW9uLiAgICAgICAgICAgICAgICAgOjo9ICBwcm9wZXJ0eSAoIFwiOlwiIHR5cGUgKT8gPEVORF9PRl9MSU5FPiAgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5vbnNlbnNlLi4uIDxFTkRfT0ZfTElORT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cblxucHJlbWlzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcHJvY2VkdXJlQ2FsbC4uLiA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuc3VwcG9zaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgcHJvY2VkdXJlQ2FsbC4uLiA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuY29uY2x1c2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuZGVkdWN0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuaHlwb3RoZXNpcy4gICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgc3RhdGVtZW50Li4uIDxFTkRfT0ZfTElORT4gIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBub25zZW5zZS4uLiA8RU5EX09GX0xJTkU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtcblxuXG5cbnN0ZXAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHN0YXRlbWVudC4uLiBxdWFsaWZpY2F0aW9uPyA8RU5EX09GX0xJTkU+ICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbm9uc2Vuc2UuLi4gcXVhbGlmaWNhdGlvbj8gPEVORF9PRl9MSU5FPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cblxuXG5xdWFsaWZpY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcImJlY2F1c2VcIiBzYXRpc2ZpZXNBc3NlcnRpb25cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgXCJieVwiIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IFxuXG5cblxucGFyZW50aGVzaXNlZExhYmVscyAgICAgICAgICAgICAgICAgIDo6PSAgXCIoXCIgbGFiZWxzIFwiKVwiIDsgXG5cbnBhcmVudGhlc2lzZWRMYWJlbCAgICAgICAgICAgICAgICAgICA6Oj0gIFwiKFwiIGxhYmVsIFwiKVwiIDsgXG5cblxuXG5wcm9jZWR1cmVDYWxsICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIkBcIjxOT19XSElURVNQQUNFPnJlZmVyZW5jZTxOT19XSElURVNQQUNFPlwiKFwiIHBhcmFtZXRlciAoIFwiLFwiIHBhcmFtZXRlciApKiBcIilcIiA7XG5cblxuXG5zaWduYXR1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBcIltcIiB0ZXJtICggXCIsXCIgdGVybSApKiBcIl1cIiA7XG5cblxuXG5hcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBhcmd1bWVudCAoIFwiLFwiIGFyZ3VtZW50ICkqIDtcblxubGFiZWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbGFiZWwgKCBcIixcIiBsYWJlbCApKiA7XG5cbnR5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHR5cGUgKCBcIixcIiB0eXBlICkqIDtcblxuXG5cbmFyZ3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHRlcm0gKCApIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB0eXBlICggKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBzdHVmZlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7XG5cbm1ldGFBcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIHN0YXRlbWVudCAoICkgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFUeXBlICggKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5mcmFtZUFyZ3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBmcmFtZSAoICkgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG1ldGFUeXBlICggKSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO1xuXG5cblxucmVmZXJlbmNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbWV0YXZhcmlhYmxlIDtcblxubGFiZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSAgbWV0YXZhcmlhYmxlIDtcblxuXG5cbm1ldGF2YXJpYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtuYW1lXSAoIDxOT19XSElURVNQQUNFPiBcIihcIiBhcmd1bWVudCBcIilcIiApPyA7XG5cbnBhcmFtZXRlci4gICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSA7XG5cbnZhcmlhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSA7XG5cbnByb3BlcnR5LiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFtpZGVudGlmaWVyXSsgO1xuXG5tZXRhVHlwZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICBbbWV0YS10eXBlXSA7XG5cbnR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gIFt0eXBlXSA7XG5cblxuXG5zdHVmZi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9ICAoIFt0eXBlXSB8IFtzeW1ib2xdIHwgW25hbWVdIHwgW2lkZW50aWZpZXJdIHwgW2JyYWNrZXRdIHwgW3Jlc2VydmVkXSB8IFt1bmFzc2lnbmVkXSApKyA7XG5cbm5vbnNlbnNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gICggW3NwZWNpYWxdIHwgW21ldGEtdHlwZV0gfCBbc2Vjb25kYXJ5LWtleXdvcmRdIHwgW3R5cGVdIHwgW3N5bWJvbF0gfCBbbmFtZV0gfCBbaWRlbnRpZmllcl0gfCBbYnJhY2tldF0gfCBbcmVzZXJ2ZWRdIHwgW3VuYXNzaWduZWRdICkrIDtgO1xuXG5leHBvcnQgZGVmYXVsdCBibmY7XG4iXSwibmFtZXMiOlsiYm5mIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE0V0E7OztlQUFBOzs7QUExV0EsSUFBTUEsTUFBTztJQTBXYixXQUFlQSJ9
@@ -10,25 +10,28 @@ Object.defineProperty(exports, "default", {
10
10
  });
11
11
  var entries = [
12
12
  {
13
- "special": "^(?:\\.\\.\\.|\\|-|@|,|::|:|=)"
13
+ "primary-keyword": "^(?:Rule|Axiom|Theorem|Lemma|Conjecture|MetaLemma|Metatheorem|Premises|Premise|Conclusion|Proof|Therefore|Suppose|Hence|Then|Provisional|Type|Properties|Property|Variable|Constructor|Combinator|Metavariable|Given)\\b"
14
14
  },
15
15
  {
16
- "bracket": "^(?:\\(|\\)|\\[|\\])"
16
+ "secondary-keyword": "^(?:is|in|an|a|of|by|because|for|satisfies|provisionally|defined|undefined|missing|present)\\b"
17
17
  },
18
18
  {
19
- "primary-keyword": "^(?:Rule|Axiom|Theorem|Lemma|Conjecture|MetaLemma|Metatheorem|Premises|Premise|Conclusion|Proof|Therefore|Suppose|Hence|Then|Provisional|Type|Properties|Property|Variable|Constructor|Combinator|Metavariable|Given)\\b"
19
+ "meta-type": "^(?:Statement|Reference|Frame)\\b"
20
20
  },
21
21
  {
22
- "secondary-keyword": "^(?:is|in|an|a|of|by|from|because|for|satisfies|provisionally|defined|undefined|missing|present)\\b"
22
+ "name": "^[A-Z][A-Za-z]*"
23
23
  },
24
24
  {
25
- "meta-type": "^(?:Statement|Reference|Frame)\\b"
25
+ "identifier": "^[\\p{Script=Latin}\\p{Script=Greek}][\\p{Script=Latin}\\p{Script=Greek}_0-9']*"
26
26
  },
27
27
  {
28
- "identifier": "^[A-Za-zΑ-Ωα-ω][A-Za-zΑ-Ωα-ω_0-9]*"
28
+ "special": "^(?:\\.\\.\\.|\\|-|@|,|::|:|=)"
29
+ },
30
+ {
31
+ "bracket": "^(?:\\(|\\)|\\[|\\])"
29
32
  },
30
33
  {
31
- "reserved": "^(?:\\{|\\}|<|>|;|\.|\\+|-|\\*|/|%|\\^|&|!|'|\"|#|\\$|\\?|~|`|\\\\|\\|=|\\|)"
34
+ "reserved": "^(?:\\|=|<|>|;|\\.|\\+|-|\\*|/|%|\\^|&|!|'|\"|#|\\$|\\?|~|`|\\\\|\\||\\{|\\})"
32
35
  },
33
36
  {
34
37
  "unassigned": "^[^\\s\\(\\)\\[\\]:,]+"
@@ -36,4 +39,4 @@ var entries = [
36
39
  ];
37
40
  var _default = entries;
38
41
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub21pbmFsL2VudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5jb25zdCBlbnRyaWVzID0gW1xyXG4gIHtcclxuICAgIFwic3BlY2lhbFwiOiBcIl4oPzpcXFxcLlxcXFwuXFxcXC58XFxcXHwtfEB8LHw6Onw6fD0pXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwiYnJhY2tldFwiOiBcIl4oPzpcXFxcKHxcXFxcKXxcXFxcW3xcXFxcXSlcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJwcmltYXJ5LWtleXdvcmRcIjogXCJeKD86UnVsZXxBeGlvbXxUaGVvcmVtfExlbW1hfENvbmplY3R1cmV8TWV0YUxlbW1hfE1ldGF0aGVvcmVtfFByZW1pc2VzfFByZW1pc2V8Q29uY2x1c2lvbnxQcm9vZnxUaGVyZWZvcmV8U3VwcG9zZXxIZW5jZXxUaGVufFByb3Zpc2lvbmFsfFR5cGV8UHJvcGVydGllc3xQcm9wZXJ0eXxWYXJpYWJsZXxDb25zdHJ1Y3RvcnxDb21iaW5hdG9yfE1ldGF2YXJpYWJsZXxHaXZlbilcXFxcYlwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInNlY29uZGFyeS1rZXl3b3JkXCI6IFwiXig/OmlzfGlufGFufGF8b2Z8Ynl8ZnJvbXxiZWNhdXNlfGZvcnxzYXRpc2ZpZXN8cHJvdmlzaW9uYWxseXxkZWZpbmVkfHVuZGVmaW5lZHxtaXNzaW5nfHByZXNlbnQpXFxcXGJcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJtZXRhLXR5cGVcIjogXCJeKD86U3RhdGVtZW50fFJlZmVyZW5jZXxGcmFtZSlcXFxcYlwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcImlkZW50aWZpZXJcIjogXCJeW0EtWmEtes6RLc6pzrEtz4ldW0EtWmEtes6RLc6pzrEtz4lfMC05XSpcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJyZXNlcnZlZFwiOiBcIl4oPzpcXFxce3xcXFxcfXw8fD58O3xcXC58XFxcXCt8LXxcXFxcKnwvfCV8XFxcXF58JnwhfCd8XFxcInwjfFxcXFwkfFxcXFw/fH58YHxcXFxcXFxcXHxcXFxcfD18XFxcXHwpXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwidW5hc3NpZ25lZFwiOiBcIl5bXlxcXFxzXFxcXChcXFxcKVxcXFxbXFxcXF06LF0rXCJcclxuICB9XHJcbl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBlbnRyaWVzO1xyXG4iXSwibmFtZXMiOlsiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNkJBOzs7ZUFBQTs7O0FBM0JBLElBQU1BLFVBQVU7SUFDZDtRQUNFLFdBQVc7SUFDYjtJQUNBO1FBQ0UsV0FBVztJQUNiO0lBQ0E7UUFDRSxtQkFBbUI7SUFDckI7SUFDQTtRQUNFLHFCQUFxQjtJQUN2QjtJQUNBO1FBQ0UsYUFBYTtJQUNmO0lBQ0E7UUFDRSxjQUFjO0lBQ2hCO0lBQ0E7UUFDRSxZQUFZO0lBQ2Q7SUFDQTtRQUNFLGNBQWM7SUFDaEI7Q0FDRDtJQUVELFdBQWVBIn0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub21pbmFsL2VudHJpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5jb25zdCBlbnRyaWVzID0gW1xyXG4gIHtcclxuICAgIFwicHJpbWFyeS1rZXl3b3JkXCI6IFwiXig/OlJ1bGV8QXhpb218VGhlb3JlbXxMZW1tYXxDb25qZWN0dXJlfE1ldGFMZW1tYXxNZXRhdGhlb3JlbXxQcmVtaXNlc3xQcmVtaXNlfENvbmNsdXNpb258UHJvb2Z8VGhlcmVmb3JlfFN1cHBvc2V8SGVuY2V8VGhlbnxQcm92aXNpb25hbHxUeXBlfFByb3BlcnRpZXN8UHJvcGVydHl8VmFyaWFibGV8Q29uc3RydWN0b3J8Q29tYmluYXRvcnxNZXRhdmFyaWFibGV8R2l2ZW4pXFxcXGJcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJzZWNvbmRhcnkta2V5d29yZFwiOiBcIl4oPzppc3xpbnxhbnxhfG9mfGJ5fGJlY2F1c2V8Zm9yfHNhdGlzZmllc3xwcm92aXNpb25hbGx5fGRlZmluZWR8dW5kZWZpbmVkfG1pc3Npbmd8cHJlc2VudClcXFxcYlwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcIm1ldGEtdHlwZVwiOiBcIl4oPzpTdGF0ZW1lbnR8UmVmZXJlbmNlfEZyYW1lKVxcXFxiXCJcclxuICB9LFxyXG4gIHtcclxuICAgIFwibmFtZVwiOiBcIl5bQS1aXVtBLVphLXpdKlwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcImlkZW50aWZpZXJcIjogXCJeW1xcXFxwe1NjcmlwdD1MYXRpbn1cXFxccHtTY3JpcHQ9R3JlZWt9XVtcXFxccHtTY3JpcHQ9TGF0aW59XFxcXHB7U2NyaXB0PUdyZWVrfV8wLTknXSpcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJzcGVjaWFsXCI6IFwiXig/OlxcXFwuXFxcXC5cXFxcLnxcXFxcfC18QHwsfDo6fDp8PSlcIlxyXG4gIH0sXHJcbiAge1xyXG4gICAgXCJicmFja2V0XCI6IFwiXig/OlxcXFwofFxcXFwpfFxcXFxbfFxcXFxdKVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInJlc2VydmVkXCI6IFwiXig/OlxcXFx8PXw8fD58O3xcXFxcLnxcXFxcK3wtfFxcXFwqfC98JXxcXFxcXnwmfCF8J3xcXFwifCN8XFxcXCR8XFxcXD98fnxgfFxcXFxcXFxcfFxcXFx8fFxcXFx7fFxcXFx9KVwiXHJcbiAgfSxcclxuICB7XHJcbiAgICBcInVuYXNzaWduZWRcIjogXCJeW15cXFxcc1xcXFwoXFxcXClcXFxcW1xcXFxdOixdK1wiXHJcbiAgfVxyXG5dO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZW50cmllcztcclxuXHJcbiJdLCJuYW1lcyI6WyJlbnRyaWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnQ0E7OztlQUFBOzs7QUE5QkEsSUFBTUEsVUFBVTtJQUNkO1FBQ0UsbUJBQW1CO0lBQ3JCO0lBQ0E7UUFDRSxxQkFBcUI7SUFDdkI7SUFDQTtRQUNFLGFBQWE7SUFDZjtJQUNBO1FBQ0UsUUFBUTtJQUNWO0lBQ0E7UUFDRSxjQUFjO0lBQ2hCO0lBQ0E7UUFDRSxXQUFXO0lBQ2I7SUFDQTtRQUNFLFdBQVc7SUFDYjtJQUNBO1FBQ0UsWUFBWTtJQUNkO0lBQ0E7UUFDRSxjQUFjO0lBQ2hCO0NBQ0Q7SUFFRCxXQUFlQSJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-grammars",
3
3
  "author": "James Smith",
4
- "version": "1.3.306",
4
+ "version": "1.3.310",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-grammars",
7
7
  "description": "Occam's grammars.",
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ const bnf = `
4
+
5
+ document ::= ( rule | error )+ ;
6
+
7
+ rule ::= name "::=" definitions ";" ;
8
+
9
+ name ::= [name] ;
10
+
11
+ definitions ::= definition ( "|" definition )* ;
12
+
13
+ definition ::= part+ precedence? ;
14
+
15
+ part ::= nonTerminalPart quantifier*
16
+
17
+ | terminalPart quantifier*
18
+
19
+ ;
20
+
21
+ nonTerminalPart ::= choiceOfParts
22
+
23
+ | sequenceOfParts
24
+
25
+ | ruleName
26
+
27
+ ;
28
+
29
+ terminalPart ::= significantTokenType
30
+
31
+ | stringLiteral
32
+
33
+ | endOfLine
34
+
35
+ | noWhitespace
36
+
37
+ ;
38
+
39
+ sequenceOfParts ::= "(" part part+ ")" ;
40
+
41
+ choiceOfParts ::= "(" partChoice ( "|" partChoice )+ ")" ;
42
+
43
+ partChoice ::= part precedence? ;
44
+
45
+ ruleName ::= [name] ;
46
+
47
+ significantTokenType ::= [type] ;
48
+
49
+ stringLiteral ::= [string-literal] ;
50
+
51
+ precedence ::= "(" [number]? ")" ;
52
+
53
+ endOfLine ::= "<END_OF_LINE>" ;
54
+
55
+ noWhitespace ::= "<NO_WHITESPACE>" ;
56
+
57
+ quantifier ::= optionalQuantifier
58
+
59
+ | oneOrMoreQuantifier
60
+
61
+ | zeroOrMoreQuantifier
62
+
63
+ ;
64
+
65
+ optionalQuantifier ::= <NO_WHITESPACE>"?" ;
66
+
67
+ oneOrMoreQuantifier ::= <NO_WHITESPACE>"+" ;
68
+
69
+ zeroOrMoreQuantifier ::= <NO_WHITESPACE>"*" ;
70
+
71
+ error. ::= . ;
72
+
73
+ `;
74
+
75
+ export default bnf;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ const entries = [
4
+ {
5
+ "special": "^(?:\\||\\(|\\)|\\?|\\*|\\+|::=|;|<NO_WHITESPACE>|<END_OF_LINE>)"
6
+ },
7
+ {
8
+ "number": "^(?:0|[1-9][0-9]*)"
9
+ },
10
+ {
11
+ "name": "^[\\w~]+"
12
+ },
13
+ {
14
+ "type": "^\\[[^\\]]+\\]"
15
+ },
16
+ {
17
+ "unassigned": "^[^\\s]+"
18
+ }
19
+ ];
20
+
21
+ export default entries;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { BNFLexer, CommonLexer, WhitespaceToken, RegularExpressionToken, EndOfLineNonSignificantToken, DoublyQuotedStringLiteralToken } from "occam-lexers";
3
+ import { CommonLexer, WhitespaceToken, EndOfLineNonSignificantToken, DoublyQuotedStringLiteralToken } from "occam-lexers";
4
4
 
5
- const { entries } = BNFLexer;
5
+ import entries from "./entries";
6
6
 
7
7
  export default class CustomGrammarBNFnLexer extends CommonLexer {
8
8
  static entries = entries;
@@ -13,7 +13,7 @@ export default class CustomGrammarBNFnLexer extends CommonLexer {
13
13
 
14
14
  static EndOfLineCommentToken = null;
15
15
 
16
- static RegularExpressionToken = RegularExpressionToken;
16
+ static RegularExpressionToken = null;
17
17
 
18
18
  static SingleLineCommentToken = null;
19
19
 
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { BNFParser, CommonParser } from "occam-parsers";
3
+ import { CommonParser } from "occam-parsers";
4
4
 
5
- const { bnf } = BNFParser;
5
+ import bnf from "./bnf";
6
6
 
7
7
  export default class CustomGrammarBNFParser extends CommonParser {
8
8
  static bnf = bnf;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ const bnf = `
4
+
5
+
6
+ document ::= ( expression | verticalSpace | error )+ ;
7
+
8
+
9
+ expression ::= <NO_WHITESPACE>[unassigned]<NO_WHITESPACE><END_OF_LINE> ;
10
+
11
+
12
+ verticalSpace ::= <END_OF_LINE>+ ;
13
+
14
+
15
+ error. ::= . ;
16
+
17
+ `;
18
+
19
+ export default bnf;
@@ -4,7 +4,7 @@ import { CommonLexer, WhitespaceToken, EndOfLineSignificantToken } from "occam-l
4
4
 
5
5
  import entries from "./entries";
6
6
 
7
- export default class CustomGrammarPatternLexer extends CommonLexer {
7
+ export default class CustomGrammarVocabularyLexer extends CommonLexer {
8
8
  static entries = entries;
9
9
 
10
10
  static EndOfLineToken = EndOfLineSignificantToken;
@@ -27,9 +27,9 @@ export default class CustomGrammarPatternLexer extends CommonLexer {
27
27
 
28
28
  static DoublyQuotedStringLiteralToken = null;
29
29
 
30
- static fromNothing() { return CommonLexer.fromNothing(CustomGrammarPatternLexer); }
30
+ static fromNothing() { return CommonLexer.fromNothing(CustomGrammarVocabularyLexer); }
31
31
 
32
- static fromRules(rules) { return CommonLexer.fromRules(CustomGrammarPatternLexer, rules); }
32
+ static fromRules(rules) { return CommonLexer.fromRules(CustomGrammarVocabularyLexer, rules); }
33
33
 
34
- static fromEntries(entries) { return CommonLexer.fromEntries(CustomGrammarPatternLexer, entries); }
34
+ static fromEntries(entries) { return CommonLexer.fromEntries(CustomGrammarVocabularyLexer, entries); }
35
35
  }
@@ -4,12 +4,12 @@ import { CommonParser } from "occam-parsers";
4
4
 
5
5
  import bnf from "./bnf";
6
6
 
7
- export default class CustomGrammarPatternParser extends CommonParser {
7
+ export default class CustomGrammarVocabularyParser extends CommonParser {
8
8
  static bnf = bnf;
9
9
 
10
- static fromNothing() { return CommonParser.fromNothing(CustomGrammarPatternParser); }
10
+ static fromNothing() { return CommonParser.fromNothing(CustomGrammarVocabularyParser); }
11
11
 
12
- static fromBNF(bnf) { return CommonParser.fromBNF(CustomGrammarPatternParser, bnf); }
12
+ static fromBNF(bnf) { return CommonParser.fromBNF(CustomGrammarVocabularyParser, bnf); }
13
13
 
14
- static fromRules(rules) { return CommonParser.fromRules(CustomGrammarPatternParser, rules); }
14
+ static fromRules(rules) { return CommonParser.fromRules(CustomGrammarVocabularyParser, rules); }
15
15
  }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import { CustomGrammarVocabularyLexer, CustomGrammarVocabularyParser } from "../../index"; ///
4
+
5
+ import View from "../view";
6
+
7
+ export default class CustomGrammarVocabularyView extends View {
8
+ static Lexer = CustomGrammarVocabularyLexer;
9
+
10
+ static Parser = CustomGrammarVocabularyParser;
11
+
12
+ static readOnly = false;
13
+
14
+ static initialContent = `adsf
15
+
16
+ aadf
17
+ `;
18
+
19
+ static defaultProperties = {
20
+ className: "custom-grammar-vocabulary",
21
+ };
22
+ }
package/src/example.js CHANGED
@@ -11,7 +11,7 @@ import JSONView from "./example/view/json";
11
11
  import FurtleView from "./example/view/furtle";
12
12
  import PlainTextView from "./example/view/plainText";
13
13
  import CustomGrammarBNFView from "./example/view/customGrammarBNF";
14
- import CustomGrammarPatternView from "./example/view/customGrammarPattern";
14
+ import CustomGrammarVocabularyView from "./example/view/customGrammarVocabulary";
15
15
 
16
16
  const { renderStyles } = withStyle;
17
17
 
@@ -26,7 +26,7 @@ switch (example) {
26
26
  case "furtle" : View = FurtleView; break;
27
27
  case "plain-text" : View = PlainTextView; break;
28
28
  case "custom-grammar-bnf" : View = CustomGrammarBNFView; break;
29
- case "custom-grammar-pattern" : View = CustomGrammarPatternView; break;
29
+ case "custom-grammar-vocabulary" : View = CustomGrammarVocabularyView; break;
30
30
  }
31
31
 
32
32
  renderStyles();
package/src/index.js CHANGED
@@ -8,11 +8,11 @@ export { default as JSONLexer } from "./json/lexer";
8
8
  export { default as NominalLexer } from "./nominal/lexer";
9
9
  export { default as PlainTextLexer } from "./plainText/lexer";
10
10
  export { default as CustomGrammarBNFLexer } from "./customGrammarBNF/lexer";
11
- export { default as CustomGrammarPatternLexer } from "./customGrammarPattern/lexer";
11
+ export { default as CustomGrammarVocabularyLexer } from "./customGrammarVocabulary/lexer";
12
12
 
13
13
  export { default as TeXParser } from "./teX/parser";
14
14
  export { default as JSONParser } from "./json/parser";
15
15
  export { default as NominalParser } from "./nominal/parser";
16
16
  export { default as PlainTextParser } from "./plainText/parser";
17
17
  export { default as CustomGrammarBNFParser } from "./customGrammarBNF/parser";
18
- export { default as CustomGrammarPatternParser } from "./customGrammarPattern/parser";
18
+ export { default as CustomGrammarVocabularyParser } from "./customGrammarVocabulary/parser";
@@ -344,7 +344,7 @@ label. ::= metavariable ;
344
344
 
345
345
 
346
346
 
347
- metavariable. ::= [identifier] ( <NO_WHITESPACE> "(" argument ")" )? ;
347
+ metavariable. ::= [name] ( <NO_WHITESPACE> "(" argument ")" )? ;
348
348
 
349
349
  parameter. ::= [identifier] ;
350
350
 
@@ -358,8 +358,8 @@ type. ::= [type] ;
358
358
 
359
359
 
360
360
 
361
- stuff. ::= ( [type] | [symbol] | [bracket] | [reserved] | [identifier] | [unassigned] )+ ;
361
+ stuff. ::= ( [type] | [symbol] | [name] | [identifier] | [bracket] | [reserved] | [unassigned] )+ ;
362
362
 
363
- nonsense. ::= ( [special] | [meta-type] | [secondary-keyword] | [type] | [symbol] | [bracket] | [reserved] | [identifier] | [unassigned] )+ ;`;
363
+ nonsense. ::= ( [special] | [meta-type] | [secondary-keyword] | [type] | [symbol] | [name] | [identifier] | [bracket] | [reserved] | [unassigned] )+ ;`;
364
364
 
365
365
  export default bnf;
@@ -2,25 +2,28 @@
2
2
 
3
3
  const entries = [
4
4
  {
5
- "special": "^(?:\\.\\.\\.|\\|-|@|,|::|:|=)"
5
+ "primary-keyword": "^(?:Rule|Axiom|Theorem|Lemma|Conjecture|MetaLemma|Metatheorem|Premises|Premise|Conclusion|Proof|Therefore|Suppose|Hence|Then|Provisional|Type|Properties|Property|Variable|Constructor|Combinator|Metavariable|Given)\\b"
6
6
  },
7
7
  {
8
- "bracket": "^(?:\\(|\\)|\\[|\\])"
8
+ "secondary-keyword": "^(?:is|in|an|a|of|by|because|for|satisfies|provisionally|defined|undefined|missing|present)\\b"
9
9
  },
10
10
  {
11
- "primary-keyword": "^(?:Rule|Axiom|Theorem|Lemma|Conjecture|MetaLemma|Metatheorem|Premises|Premise|Conclusion|Proof|Therefore|Suppose|Hence|Then|Provisional|Type|Properties|Property|Variable|Constructor|Combinator|Metavariable|Given)\\b"
11
+ "meta-type": "^(?:Statement|Reference|Frame)\\b"
12
12
  },
13
13
  {
14
- "secondary-keyword": "^(?:is|in|an|a|of|by|from|because|for|satisfies|provisionally|defined|undefined|missing|present)\\b"
14
+ "name": "^[A-Z][A-Za-z]*"
15
15
  },
16
16
  {
17
- "meta-type": "^(?:Statement|Reference|Frame)\\b"
17
+ "identifier": "^[\\p{Script=Latin}\\p{Script=Greek}][\\p{Script=Latin}\\p{Script=Greek}_0-9']*"
18
18
  },
19
19
  {
20
- "identifier": "^[A-Za-zΑ-Ωα-ω][A-Za-zΑ-Ωα-ω_0-9]*"
20
+ "special": "^(?:\\.\\.\\.|\\|-|@|,|::|:|=)"
21
21
  },
22
22
  {
23
- "reserved": "^(?:\\{|\\}|<|>|;|\.|\\+|-|\\*|/|%|\\^|&|!|'|\"|#|\\$|\\?|~|`|\\\\|\\|=|\\|)"
23
+ "bracket": "^(?:\\(|\\)|\\[|\\])"
24
+ },
25
+ {
26
+ "reserved": "^(?:\\|=|<|>|;|\\.|\\+|-|\\*|/|%|\\^|&|!|'|\"|#|\\$|\\?|~|`|\\\\|\\||\\{|\\})"
24
27
  },
25
28
  {
26
29
  "unassigned": "^[^\\s\\(\\)\\[\\]:,]+"
@@ -28,3 +31,4 @@ const entries = [
28
31
  ];
29
32
 
30
33
  export default entries;
34
+
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var bnf = "\n\n\n document ::= ( expression | error )+ ;\n\n\n expression ::= <NO_WHITESPACE>[unassigned]<NO_WHITESPACE><END_OF_LINE> ;\n\n\n error. ::= . ;\n\n";
12
- var _default = bnf;
13
-
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdXN0b21HcmFtbWFyUGF0dGVybi9ibmYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IGJuZiA9IGBcblxuXG4gICAgZG9jdW1lbnQgICAgOjo9ICAoIGV4cHJlc3Npb24gfCBlcnJvciApKyA7XG5cblxuICAgIGV4cHJlc3Npb24gIDo6PSAgPE5PX1dISVRFU1BBQ0U+W3VuYXNzaWduZWRdPE5PX1dISVRFU1BBQ0U+PEVORF9PRl9MSU5FPiA7XG5cblxuICAgIGVycm9yLiAgICAgIDo6PSAgLiA7XG5cbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGJuZjtcbiJdLCJuYW1lcyI6WyJibmYiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O0FBYkEsSUFBTUEsTUFBTztJQWFiLFdBQWVBIn0=
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var entries = [
12
- {
13
- "unassigned": "^[^\\s]+"
14
- }
15
- ];
16
- var _default = entries;
17
-
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdXN0b21HcmFtbWFyUGF0dGVybi9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuY29uc3QgZW50cmllcyA9IFtcclxuICB7XHJcbiAgICBcInVuYXNzaWduZWRcIjogXCJeW15cXFxcc10rXCJcclxuICB9XHJcbl07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBlbnRyaWVzO1xyXG4iXSwibmFtZXMiOlsiZW50cmllcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUFBOzs7QUFOQSxJQUFNQSxVQUFVO0lBQ2Q7UUFDRSxjQUFjO0lBQ2hCO0NBQ0Q7SUFFRCxXQUFlQSJ9