@angular/language-service 12.1.1 → 12.1.5

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/bundles/ivy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v12.1.1
2
+ * @license Angular v12.1.5
3
3
  * Copyright Google LLC All Rights Reserved.
4
4
  * License: MIT
5
5
  */
@@ -478,269 +478,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
478
478
  function mergeNsAndName(prefix, localName) {
479
479
  return prefix ? `:${prefix}:${localName}` : localName;
480
480
  }
481
- // see https://www.w3.org/TR/html51/syntax.html#named-character-references
482
- // see https://html.spec.whatwg.org/multipage/entities.json
483
- // This list is not exhaustive to keep the compiler footprint low.
484
- // The `{` / `ƫ` syntax should be used when the named character reference does not
485
- // exist.
486
- const NAMED_ENTITIES = {
487
- 'Aacute': '\u00C1',
488
- 'aacute': '\u00E1',
489
- 'Acirc': '\u00C2',
490
- 'acirc': '\u00E2',
491
- 'acute': '\u00B4',
492
- 'AElig': '\u00C6',
493
- 'aelig': '\u00E6',
494
- 'Agrave': '\u00C0',
495
- 'agrave': '\u00E0',
496
- 'alefsym': '\u2135',
497
- 'Alpha': '\u0391',
498
- 'alpha': '\u03B1',
499
- 'amp': '&',
500
- 'and': '\u2227',
501
- 'ang': '\u2220',
502
- 'apos': '\u0027',
503
- 'Aring': '\u00C5',
504
- 'aring': '\u00E5',
505
- 'asymp': '\u2248',
506
- 'Atilde': '\u00C3',
507
- 'atilde': '\u00E3',
508
- 'Auml': '\u00C4',
509
- 'auml': '\u00E4',
510
- 'bdquo': '\u201E',
511
- 'Beta': '\u0392',
512
- 'beta': '\u03B2',
513
- 'brvbar': '\u00A6',
514
- 'bull': '\u2022',
515
- 'cap': '\u2229',
516
- 'Ccedil': '\u00C7',
517
- 'ccedil': '\u00E7',
518
- 'cedil': '\u00B8',
519
- 'cent': '\u00A2',
520
- 'Chi': '\u03A7',
521
- 'chi': '\u03C7',
522
- 'circ': '\u02C6',
523
- 'clubs': '\u2663',
524
- 'cong': '\u2245',
525
- 'copy': '\u00A9',
526
- 'crarr': '\u21B5',
527
- 'cup': '\u222A',
528
- 'curren': '\u00A4',
529
- 'dagger': '\u2020',
530
- 'Dagger': '\u2021',
531
- 'darr': '\u2193',
532
- 'dArr': '\u21D3',
533
- 'deg': '\u00B0',
534
- 'Delta': '\u0394',
535
- 'delta': '\u03B4',
536
- 'diams': '\u2666',
537
- 'divide': '\u00F7',
538
- 'Eacute': '\u00C9',
539
- 'eacute': '\u00E9',
540
- 'Ecirc': '\u00CA',
541
- 'ecirc': '\u00EA',
542
- 'Egrave': '\u00C8',
543
- 'egrave': '\u00E8',
544
- 'empty': '\u2205',
545
- 'emsp': '\u2003',
546
- 'ensp': '\u2002',
547
- 'Epsilon': '\u0395',
548
- 'epsilon': '\u03B5',
549
- 'equiv': '\u2261',
550
- 'Eta': '\u0397',
551
- 'eta': '\u03B7',
552
- 'ETH': '\u00D0',
553
- 'eth': '\u00F0',
554
- 'Euml': '\u00CB',
555
- 'euml': '\u00EB',
556
- 'euro': '\u20AC',
557
- 'exist': '\u2203',
558
- 'fnof': '\u0192',
559
- 'forall': '\u2200',
560
- 'frac12': '\u00BD',
561
- 'frac14': '\u00BC',
562
- 'frac34': '\u00BE',
563
- 'frasl': '\u2044',
564
- 'Gamma': '\u0393',
565
- 'gamma': '\u03B3',
566
- 'ge': '\u2265',
567
- 'gt': '>',
568
- 'harr': '\u2194',
569
- 'hArr': '\u21D4',
570
- 'hearts': '\u2665',
571
- 'hellip': '\u2026',
572
- 'Iacute': '\u00CD',
573
- 'iacute': '\u00ED',
574
- 'Icirc': '\u00CE',
575
- 'icirc': '\u00EE',
576
- 'iexcl': '\u00A1',
577
- 'Igrave': '\u00CC',
578
- 'igrave': '\u00EC',
579
- 'image': '\u2111',
580
- 'infin': '\u221E',
581
- 'int': '\u222B',
582
- 'Iota': '\u0399',
583
- 'iota': '\u03B9',
584
- 'iquest': '\u00BF',
585
- 'isin': '\u2208',
586
- 'Iuml': '\u00CF',
587
- 'iuml': '\u00EF',
588
- 'Kappa': '\u039A',
589
- 'kappa': '\u03BA',
590
- 'Lambda': '\u039B',
591
- 'lambda': '\u03BB',
592
- 'lang': '\u27E8',
593
- 'laquo': '\u00AB',
594
- 'larr': '\u2190',
595
- 'lArr': '\u21D0',
596
- 'lceil': '\u2308',
597
- 'ldquo': '\u201C',
598
- 'le': '\u2264',
599
- 'lfloor': '\u230A',
600
- 'lowast': '\u2217',
601
- 'loz': '\u25CA',
602
- 'lrm': '\u200E',
603
- 'lsaquo': '\u2039',
604
- 'lsquo': '\u2018',
605
- 'lt': '<',
606
- 'macr': '\u00AF',
607
- 'mdash': '\u2014',
608
- 'micro': '\u00B5',
609
- 'middot': '\u00B7',
610
- 'minus': '\u2212',
611
- 'Mu': '\u039C',
612
- 'mu': '\u03BC',
613
- 'nabla': '\u2207',
614
- 'nbsp': '\u00A0',
615
- 'ndash': '\u2013',
616
- 'ne': '\u2260',
617
- 'ni': '\u220B',
618
- 'not': '\u00AC',
619
- 'notin': '\u2209',
620
- 'nsub': '\u2284',
621
- 'Ntilde': '\u00D1',
622
- 'ntilde': '\u00F1',
623
- 'Nu': '\u039D',
624
- 'nu': '\u03BD',
625
- 'Oacute': '\u00D3',
626
- 'oacute': '\u00F3',
627
- 'Ocirc': '\u00D4',
628
- 'ocirc': '\u00F4',
629
- 'OElig': '\u0152',
630
- 'oelig': '\u0153',
631
- 'Ograve': '\u00D2',
632
- 'ograve': '\u00F2',
633
- 'oline': '\u203E',
634
- 'Omega': '\u03A9',
635
- 'omega': '\u03C9',
636
- 'Omicron': '\u039F',
637
- 'omicron': '\u03BF',
638
- 'oplus': '\u2295',
639
- 'or': '\u2228',
640
- 'ordf': '\u00AA',
641
- 'ordm': '\u00BA',
642
- 'Oslash': '\u00D8',
643
- 'oslash': '\u00F8',
644
- 'Otilde': '\u00D5',
645
- 'otilde': '\u00F5',
646
- 'otimes': '\u2297',
647
- 'Ouml': '\u00D6',
648
- 'ouml': '\u00F6',
649
- 'para': '\u00B6',
650
- 'permil': '\u2030',
651
- 'perp': '\u22A5',
652
- 'Phi': '\u03A6',
653
- 'phi': '\u03C6',
654
- 'Pi': '\u03A0',
655
- 'pi': '\u03C0',
656
- 'piv': '\u03D6',
657
- 'plusmn': '\u00B1',
658
- 'pound': '\u00A3',
659
- 'prime': '\u2032',
660
- 'Prime': '\u2033',
661
- 'prod': '\u220F',
662
- 'prop': '\u221D',
663
- 'Psi': '\u03A8',
664
- 'psi': '\u03C8',
665
- 'quot': '\u0022',
666
- 'radic': '\u221A',
667
- 'rang': '\u27E9',
668
- 'raquo': '\u00BB',
669
- 'rarr': '\u2192',
670
- 'rArr': '\u21D2',
671
- 'rceil': '\u2309',
672
- 'rdquo': '\u201D',
673
- 'real': '\u211C',
674
- 'reg': '\u00AE',
675
- 'rfloor': '\u230B',
676
- 'Rho': '\u03A1',
677
- 'rho': '\u03C1',
678
- 'rlm': '\u200F',
679
- 'rsaquo': '\u203A',
680
- 'rsquo': '\u2019',
681
- 'sbquo': '\u201A',
682
- 'Scaron': '\u0160',
683
- 'scaron': '\u0161',
684
- 'sdot': '\u22C5',
685
- 'sect': '\u00A7',
686
- 'shy': '\u00AD',
687
- 'Sigma': '\u03A3',
688
- 'sigma': '\u03C3',
689
- 'sigmaf': '\u03C2',
690
- 'sim': '\u223C',
691
- 'spades': '\u2660',
692
- 'sub': '\u2282',
693
- 'sube': '\u2286',
694
- 'sum': '\u2211',
695
- 'sup': '\u2283',
696
- 'sup1': '\u00B9',
697
- 'sup2': '\u00B2',
698
- 'sup3': '\u00B3',
699
- 'supe': '\u2287',
700
- 'szlig': '\u00DF',
701
- 'Tau': '\u03A4',
702
- 'tau': '\u03C4',
703
- 'there4': '\u2234',
704
- 'Theta': '\u0398',
705
- 'theta': '\u03B8',
706
- 'thetasym': '\u03D1',
707
- 'thinsp': '\u2009',
708
- 'THORN': '\u00DE',
709
- 'thorn': '\u00FE',
710
- 'tilde': '\u02DC',
711
- 'times': '\u00D7',
712
- 'trade': '\u2122',
713
- 'Uacute': '\u00DA',
714
- 'uacute': '\u00FA',
715
- 'uarr': '\u2191',
716
- 'uArr': '\u21D1',
717
- 'Ucirc': '\u00DB',
718
- 'ucirc': '\u00FB',
719
- 'Ugrave': '\u00D9',
720
- 'ugrave': '\u00F9',
721
- 'uml': '\u00A8',
722
- 'upsih': '\u03D2',
723
- 'Upsilon': '\u03A5',
724
- 'upsilon': '\u03C5',
725
- 'Uuml': '\u00DC',
726
- 'uuml': '\u00FC',
727
- 'weierp': '\u2118',
728
- 'Xi': '\u039E',
729
- 'xi': '\u03BE',
730
- 'Yacute': '\u00DD',
731
- 'yacute': '\u00FD',
732
- 'yen': '\u00A5',
733
- 'yuml': '\u00FF',
734
- 'Yuml': '\u0178',
735
- 'Zeta': '\u0396',
736
- 'zeta': '\u03B6',
737
- 'zwj': '\u200D',
738
- 'zwnj': '\u200C',
739
- };
740
- // The &ngsp; pseudo-entity is denoting a space. see:
741
- // https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart
742
- const NGSP_UNICODE = '\uE500';
743
- NAMED_ENTITIES['ngsp'] = NGSP_UNICODE;
744
481
 
745
482
  /**
746
483
  * @license
@@ -6410,9 +6147,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
6410
6147
  this.span = span;
6411
6148
  this.sourceSpan = sourceSpan;
6412
6149
  }
6413
- visit(visitor, context = null) {
6414
- return null;
6415
- }
6416
6150
  toString() {
6417
6151
  return 'AST';
6418
6152
  }
@@ -7679,7 +7413,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
7679
7413
  const key = this._visit(ast.key, _Mode.Expression);
7680
7414
  const value = this._visit(ast.value, _Mode.Expression);
7681
7415
  if (obj === this._implicitReceiver) {
7682
- this._localResolver.maybeRestoreView(0, false);
7416
+ this._localResolver.maybeRestoreView();
7683
7417
  }
7684
7418
  return convertToStatementIfNeeded(mode, obj.key(key).set(value));
7685
7419
  }
@@ -8151,7 +7885,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
8151
7885
  class BuiltinFunctionCall extends FunctionCall {
8152
7886
  constructor(span, sourceSpan, args, converter) {
8153
7887
  super(span, sourceSpan, null, args);
8154
- this.args = args;
8155
7888
  this.converter = converter;
8156
7889
  }
8157
7890
  }
@@ -9001,6 +8734,2149 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
9001
8734
  return result;
9002
8735
  }
9003
8736
 
8737
+ /**
8738
+ * @license
8739
+ * Copyright Google LLC All Rights Reserved.
8740
+ *
8741
+ * Use of this source code is governed by an MIT-style license that can be
8742
+ * found in the LICENSE file at https://angular.io/license
8743
+ */
8744
+ // Mapping between all HTML entity names and their unicode representation.
8745
+ // Generated from https://html.spec.whatwg.org/multipage/entities.json by stripping
8746
+ // the `&` and `;` from the keys and removing the duplicates.
8747
+ // see https://www.w3.org/TR/html51/syntax.html#named-character-references
8748
+ const NAMED_ENTITIES = {
8749
+ 'AElig': '\u00C6',
8750
+ 'AMP': '\u0026',
8751
+ 'amp': '\u0026',
8752
+ 'Aacute': '\u00C1',
8753
+ 'Abreve': '\u0102',
8754
+ 'Acirc': '\u00C2',
8755
+ 'Acy': '\u0410',
8756
+ 'Afr': '\uD835\uDD04',
8757
+ 'Agrave': '\u00C0',
8758
+ 'Alpha': '\u0391',
8759
+ 'Amacr': '\u0100',
8760
+ 'And': '\u2A53',
8761
+ 'Aogon': '\u0104',
8762
+ 'Aopf': '\uD835\uDD38',
8763
+ 'ApplyFunction': '\u2061',
8764
+ 'af': '\u2061',
8765
+ 'Aring': '\u00C5',
8766
+ 'angst': '\u00C5',
8767
+ 'Ascr': '\uD835\uDC9C',
8768
+ 'Assign': '\u2254',
8769
+ 'colone': '\u2254',
8770
+ 'coloneq': '\u2254',
8771
+ 'Atilde': '\u00C3',
8772
+ 'Auml': '\u00C4',
8773
+ 'Backslash': '\u2216',
8774
+ 'setminus': '\u2216',
8775
+ 'setmn': '\u2216',
8776
+ 'smallsetminus': '\u2216',
8777
+ 'ssetmn': '\u2216',
8778
+ 'Barv': '\u2AE7',
8779
+ 'Barwed': '\u2306',
8780
+ 'doublebarwedge': '\u2306',
8781
+ 'Bcy': '\u0411',
8782
+ 'Because': '\u2235',
8783
+ 'becaus': '\u2235',
8784
+ 'because': '\u2235',
8785
+ 'Bernoullis': '\u212C',
8786
+ 'Bscr': '\u212C',
8787
+ 'bernou': '\u212C',
8788
+ 'Beta': '\u0392',
8789
+ 'Bfr': '\uD835\uDD05',
8790
+ 'Bopf': '\uD835\uDD39',
8791
+ 'Breve': '\u02D8',
8792
+ 'breve': '\u02D8',
8793
+ 'Bumpeq': '\u224E',
8794
+ 'HumpDownHump': '\u224E',
8795
+ 'bump': '\u224E',
8796
+ 'CHcy': '\u0427',
8797
+ 'COPY': '\u00A9',
8798
+ 'copy': '\u00A9',
8799
+ 'Cacute': '\u0106',
8800
+ 'Cap': '\u22D2',
8801
+ 'CapitalDifferentialD': '\u2145',
8802
+ 'DD': '\u2145',
8803
+ 'Cayleys': '\u212D',
8804
+ 'Cfr': '\u212D',
8805
+ 'Ccaron': '\u010C',
8806
+ 'Ccedil': '\u00C7',
8807
+ 'Ccirc': '\u0108',
8808
+ 'Cconint': '\u2230',
8809
+ 'Cdot': '\u010A',
8810
+ 'Cedilla': '\u00B8',
8811
+ 'cedil': '\u00B8',
8812
+ 'CenterDot': '\u00B7',
8813
+ 'centerdot': '\u00B7',
8814
+ 'middot': '\u00B7',
8815
+ 'Chi': '\u03A7',
8816
+ 'CircleDot': '\u2299',
8817
+ 'odot': '\u2299',
8818
+ 'CircleMinus': '\u2296',
8819
+ 'ominus': '\u2296',
8820
+ 'CirclePlus': '\u2295',
8821
+ 'oplus': '\u2295',
8822
+ 'CircleTimes': '\u2297',
8823
+ 'otimes': '\u2297',
8824
+ 'ClockwiseContourIntegral': '\u2232',
8825
+ 'cwconint': '\u2232',
8826
+ 'CloseCurlyDoubleQuote': '\u201D',
8827
+ 'rdquo': '\u201D',
8828
+ 'rdquor': '\u201D',
8829
+ 'CloseCurlyQuote': '\u2019',
8830
+ 'rsquo': '\u2019',
8831
+ 'rsquor': '\u2019',
8832
+ 'Colon': '\u2237',
8833
+ 'Proportion': '\u2237',
8834
+ 'Colone': '\u2A74',
8835
+ 'Congruent': '\u2261',
8836
+ 'equiv': '\u2261',
8837
+ 'Conint': '\u222F',
8838
+ 'DoubleContourIntegral': '\u222F',
8839
+ 'ContourIntegral': '\u222E',
8840
+ 'conint': '\u222E',
8841
+ 'oint': '\u222E',
8842
+ 'Copf': '\u2102',
8843
+ 'complexes': '\u2102',
8844
+ 'Coproduct': '\u2210',
8845
+ 'coprod': '\u2210',
8846
+ 'CounterClockwiseContourIntegral': '\u2233',
8847
+ 'awconint': '\u2233',
8848
+ 'Cross': '\u2A2F',
8849
+ 'Cscr': '\uD835\uDC9E',
8850
+ 'Cup': '\u22D3',
8851
+ 'CupCap': '\u224D',
8852
+ 'asympeq': '\u224D',
8853
+ 'DDotrahd': '\u2911',
8854
+ 'DJcy': '\u0402',
8855
+ 'DScy': '\u0405',
8856
+ 'DZcy': '\u040F',
8857
+ 'Dagger': '\u2021',
8858
+ 'ddagger': '\u2021',
8859
+ 'Darr': '\u21A1',
8860
+ 'Dashv': '\u2AE4',
8861
+ 'DoubleLeftTee': '\u2AE4',
8862
+ 'Dcaron': '\u010E',
8863
+ 'Dcy': '\u0414',
8864
+ 'Del': '\u2207',
8865
+ 'nabla': '\u2207',
8866
+ 'Delta': '\u0394',
8867
+ 'Dfr': '\uD835\uDD07',
8868
+ 'DiacriticalAcute': '\u00B4',
8869
+ 'acute': '\u00B4',
8870
+ 'DiacriticalDot': '\u02D9',
8871
+ 'dot': '\u02D9',
8872
+ 'DiacriticalDoubleAcute': '\u02DD',
8873
+ 'dblac': '\u02DD',
8874
+ 'DiacriticalGrave': '\u0060',
8875
+ 'grave': '\u0060',
8876
+ 'DiacriticalTilde': '\u02DC',
8877
+ 'tilde': '\u02DC',
8878
+ 'Diamond': '\u22C4',
8879
+ 'diam': '\u22C4',
8880
+ 'diamond': '\u22C4',
8881
+ 'DifferentialD': '\u2146',
8882
+ 'dd': '\u2146',
8883
+ 'Dopf': '\uD835\uDD3B',
8884
+ 'Dot': '\u00A8',
8885
+ 'DoubleDot': '\u00A8',
8886
+ 'die': '\u00A8',
8887
+ 'uml': '\u00A8',
8888
+ 'DotDot': '\u20DC',
8889
+ 'DotEqual': '\u2250',
8890
+ 'doteq': '\u2250',
8891
+ 'esdot': '\u2250',
8892
+ 'DoubleDownArrow': '\u21D3',
8893
+ 'Downarrow': '\u21D3',
8894
+ 'dArr': '\u21D3',
8895
+ 'DoubleLeftArrow': '\u21D0',
8896
+ 'Leftarrow': '\u21D0',
8897
+ 'lArr': '\u21D0',
8898
+ 'DoubleLeftRightArrow': '\u21D4',
8899
+ 'Leftrightarrow': '\u21D4',
8900
+ 'hArr': '\u21D4',
8901
+ 'iff': '\u21D4',
8902
+ 'DoubleLongLeftArrow': '\u27F8',
8903
+ 'Longleftarrow': '\u27F8',
8904
+ 'xlArr': '\u27F8',
8905
+ 'DoubleLongLeftRightArrow': '\u27FA',
8906
+ 'Longleftrightarrow': '\u27FA',
8907
+ 'xhArr': '\u27FA',
8908
+ 'DoubleLongRightArrow': '\u27F9',
8909
+ 'Longrightarrow': '\u27F9',
8910
+ 'xrArr': '\u27F9',
8911
+ 'DoubleRightArrow': '\u21D2',
8912
+ 'Implies': '\u21D2',
8913
+ 'Rightarrow': '\u21D2',
8914
+ 'rArr': '\u21D2',
8915
+ 'DoubleRightTee': '\u22A8',
8916
+ 'vDash': '\u22A8',
8917
+ 'DoubleUpArrow': '\u21D1',
8918
+ 'Uparrow': '\u21D1',
8919
+ 'uArr': '\u21D1',
8920
+ 'DoubleUpDownArrow': '\u21D5',
8921
+ 'Updownarrow': '\u21D5',
8922
+ 'vArr': '\u21D5',
8923
+ 'DoubleVerticalBar': '\u2225',
8924
+ 'par': '\u2225',
8925
+ 'parallel': '\u2225',
8926
+ 'shortparallel': '\u2225',
8927
+ 'spar': '\u2225',
8928
+ 'DownArrow': '\u2193',
8929
+ 'ShortDownArrow': '\u2193',
8930
+ 'darr': '\u2193',
8931
+ 'downarrow': '\u2193',
8932
+ 'DownArrowBar': '\u2913',
8933
+ 'DownArrowUpArrow': '\u21F5',
8934
+ 'duarr': '\u21F5',
8935
+ 'DownBreve': '\u0311',
8936
+ 'DownLeftRightVector': '\u2950',
8937
+ 'DownLeftTeeVector': '\u295E',
8938
+ 'DownLeftVector': '\u21BD',
8939
+ 'leftharpoondown': '\u21BD',
8940
+ 'lhard': '\u21BD',
8941
+ 'DownLeftVectorBar': '\u2956',
8942
+ 'DownRightTeeVector': '\u295F',
8943
+ 'DownRightVector': '\u21C1',
8944
+ 'rhard': '\u21C1',
8945
+ 'rightharpoondown': '\u21C1',
8946
+ 'DownRightVectorBar': '\u2957',
8947
+ 'DownTee': '\u22A4',
8948
+ 'top': '\u22A4',
8949
+ 'DownTeeArrow': '\u21A7',
8950
+ 'mapstodown': '\u21A7',
8951
+ 'Dscr': '\uD835\uDC9F',
8952
+ 'Dstrok': '\u0110',
8953
+ 'ENG': '\u014A',
8954
+ 'ETH': '\u00D0',
8955
+ 'Eacute': '\u00C9',
8956
+ 'Ecaron': '\u011A',
8957
+ 'Ecirc': '\u00CA',
8958
+ 'Ecy': '\u042D',
8959
+ 'Edot': '\u0116',
8960
+ 'Efr': '\uD835\uDD08',
8961
+ 'Egrave': '\u00C8',
8962
+ 'Element': '\u2208',
8963
+ 'in': '\u2208',
8964
+ 'isin': '\u2208',
8965
+ 'isinv': '\u2208',
8966
+ 'Emacr': '\u0112',
8967
+ 'EmptySmallSquare': '\u25FB',
8968
+ 'EmptyVerySmallSquare': '\u25AB',
8969
+ 'Eogon': '\u0118',
8970
+ 'Eopf': '\uD835\uDD3C',
8971
+ 'Epsilon': '\u0395',
8972
+ 'Equal': '\u2A75',
8973
+ 'EqualTilde': '\u2242',
8974
+ 'eqsim': '\u2242',
8975
+ 'esim': '\u2242',
8976
+ 'Equilibrium': '\u21CC',
8977
+ 'rightleftharpoons': '\u21CC',
8978
+ 'rlhar': '\u21CC',
8979
+ 'Escr': '\u2130',
8980
+ 'expectation': '\u2130',
8981
+ 'Esim': '\u2A73',
8982
+ 'Eta': '\u0397',
8983
+ 'Euml': '\u00CB',
8984
+ 'Exists': '\u2203',
8985
+ 'exist': '\u2203',
8986
+ 'ExponentialE': '\u2147',
8987
+ 'ee': '\u2147',
8988
+ 'exponentiale': '\u2147',
8989
+ 'Fcy': '\u0424',
8990
+ 'Ffr': '\uD835\uDD09',
8991
+ 'FilledSmallSquare': '\u25FC',
8992
+ 'FilledVerySmallSquare': '\u25AA',
8993
+ 'blacksquare': '\u25AA',
8994
+ 'squarf': '\u25AA',
8995
+ 'squf': '\u25AA',
8996
+ 'Fopf': '\uD835\uDD3D',
8997
+ 'ForAll': '\u2200',
8998
+ 'forall': '\u2200',
8999
+ 'Fouriertrf': '\u2131',
9000
+ 'Fscr': '\u2131',
9001
+ 'GJcy': '\u0403',
9002
+ 'GT': '\u003E',
9003
+ 'gt': '\u003E',
9004
+ 'Gamma': '\u0393',
9005
+ 'Gammad': '\u03DC',
9006
+ 'Gbreve': '\u011E',
9007
+ 'Gcedil': '\u0122',
9008
+ 'Gcirc': '\u011C',
9009
+ 'Gcy': '\u0413',
9010
+ 'Gdot': '\u0120',
9011
+ 'Gfr': '\uD835\uDD0A',
9012
+ 'Gg': '\u22D9',
9013
+ 'ggg': '\u22D9',
9014
+ 'Gopf': '\uD835\uDD3E',
9015
+ 'GreaterEqual': '\u2265',
9016
+ 'ge': '\u2265',
9017
+ 'geq': '\u2265',
9018
+ 'GreaterEqualLess': '\u22DB',
9019
+ 'gel': '\u22DB',
9020
+ 'gtreqless': '\u22DB',
9021
+ 'GreaterFullEqual': '\u2267',
9022
+ 'gE': '\u2267',
9023
+ 'geqq': '\u2267',
9024
+ 'GreaterGreater': '\u2AA2',
9025
+ 'GreaterLess': '\u2277',
9026
+ 'gl': '\u2277',
9027
+ 'gtrless': '\u2277',
9028
+ 'GreaterSlantEqual': '\u2A7E',
9029
+ 'geqslant': '\u2A7E',
9030
+ 'ges': '\u2A7E',
9031
+ 'GreaterTilde': '\u2273',
9032
+ 'gsim': '\u2273',
9033
+ 'gtrsim': '\u2273',
9034
+ 'Gscr': '\uD835\uDCA2',
9035
+ 'Gt': '\u226B',
9036
+ 'NestedGreaterGreater': '\u226B',
9037
+ 'gg': '\u226B',
9038
+ 'HARDcy': '\u042A',
9039
+ 'Hacek': '\u02C7',
9040
+ 'caron': '\u02C7',
9041
+ 'Hat': '\u005E',
9042
+ 'Hcirc': '\u0124',
9043
+ 'Hfr': '\u210C',
9044
+ 'Poincareplane': '\u210C',
9045
+ 'HilbertSpace': '\u210B',
9046
+ 'Hscr': '\u210B',
9047
+ 'hamilt': '\u210B',
9048
+ 'Hopf': '\u210D',
9049
+ 'quaternions': '\u210D',
9050
+ 'HorizontalLine': '\u2500',
9051
+ 'boxh': '\u2500',
9052
+ 'Hstrok': '\u0126',
9053
+ 'HumpEqual': '\u224F',
9054
+ 'bumpe': '\u224F',
9055
+ 'bumpeq': '\u224F',
9056
+ 'IEcy': '\u0415',
9057
+ 'IJlig': '\u0132',
9058
+ 'IOcy': '\u0401',
9059
+ 'Iacute': '\u00CD',
9060
+ 'Icirc': '\u00CE',
9061
+ 'Icy': '\u0418',
9062
+ 'Idot': '\u0130',
9063
+ 'Ifr': '\u2111',
9064
+ 'Im': '\u2111',
9065
+ 'image': '\u2111',
9066
+ 'imagpart': '\u2111',
9067
+ 'Igrave': '\u00CC',
9068
+ 'Imacr': '\u012A',
9069
+ 'ImaginaryI': '\u2148',
9070
+ 'ii': '\u2148',
9071
+ 'Int': '\u222C',
9072
+ 'Integral': '\u222B',
9073
+ 'int': '\u222B',
9074
+ 'Intersection': '\u22C2',
9075
+ 'bigcap': '\u22C2',
9076
+ 'xcap': '\u22C2',
9077
+ 'InvisibleComma': '\u2063',
9078
+ 'ic': '\u2063',
9079
+ 'InvisibleTimes': '\u2062',
9080
+ 'it': '\u2062',
9081
+ 'Iogon': '\u012E',
9082
+ 'Iopf': '\uD835\uDD40',
9083
+ 'Iota': '\u0399',
9084
+ 'Iscr': '\u2110',
9085
+ 'imagline': '\u2110',
9086
+ 'Itilde': '\u0128',
9087
+ 'Iukcy': '\u0406',
9088
+ 'Iuml': '\u00CF',
9089
+ 'Jcirc': '\u0134',
9090
+ 'Jcy': '\u0419',
9091
+ 'Jfr': '\uD835\uDD0D',
9092
+ 'Jopf': '\uD835\uDD41',
9093
+ 'Jscr': '\uD835\uDCA5',
9094
+ 'Jsercy': '\u0408',
9095
+ 'Jukcy': '\u0404',
9096
+ 'KHcy': '\u0425',
9097
+ 'KJcy': '\u040C',
9098
+ 'Kappa': '\u039A',
9099
+ 'Kcedil': '\u0136',
9100
+ 'Kcy': '\u041A',
9101
+ 'Kfr': '\uD835\uDD0E',
9102
+ 'Kopf': '\uD835\uDD42',
9103
+ 'Kscr': '\uD835\uDCA6',
9104
+ 'LJcy': '\u0409',
9105
+ 'LT': '\u003C',
9106
+ 'lt': '\u003C',
9107
+ 'Lacute': '\u0139',
9108
+ 'Lambda': '\u039B',
9109
+ 'Lang': '\u27EA',
9110
+ 'Laplacetrf': '\u2112',
9111
+ 'Lscr': '\u2112',
9112
+ 'lagran': '\u2112',
9113
+ 'Larr': '\u219E',
9114
+ 'twoheadleftarrow': '\u219E',
9115
+ 'Lcaron': '\u013D',
9116
+ 'Lcedil': '\u013B',
9117
+ 'Lcy': '\u041B',
9118
+ 'LeftAngleBracket': '\u27E8',
9119
+ 'lang': '\u27E8',
9120
+ 'langle': '\u27E8',
9121
+ 'LeftArrow': '\u2190',
9122
+ 'ShortLeftArrow': '\u2190',
9123
+ 'larr': '\u2190',
9124
+ 'leftarrow': '\u2190',
9125
+ 'slarr': '\u2190',
9126
+ 'LeftArrowBar': '\u21E4',
9127
+ 'larrb': '\u21E4',
9128
+ 'LeftArrowRightArrow': '\u21C6',
9129
+ 'leftrightarrows': '\u21C6',
9130
+ 'lrarr': '\u21C6',
9131
+ 'LeftCeiling': '\u2308',
9132
+ 'lceil': '\u2308',
9133
+ 'LeftDoubleBracket': '\u27E6',
9134
+ 'lobrk': '\u27E6',
9135
+ 'LeftDownTeeVector': '\u2961',
9136
+ 'LeftDownVector': '\u21C3',
9137
+ 'dharl': '\u21C3',
9138
+ 'downharpoonleft': '\u21C3',
9139
+ 'LeftDownVectorBar': '\u2959',
9140
+ 'LeftFloor': '\u230A',
9141
+ 'lfloor': '\u230A',
9142
+ 'LeftRightArrow': '\u2194',
9143
+ 'harr': '\u2194',
9144
+ 'leftrightarrow': '\u2194',
9145
+ 'LeftRightVector': '\u294E',
9146
+ 'LeftTee': '\u22A3',
9147
+ 'dashv': '\u22A3',
9148
+ 'LeftTeeArrow': '\u21A4',
9149
+ 'mapstoleft': '\u21A4',
9150
+ 'LeftTeeVector': '\u295A',
9151
+ 'LeftTriangle': '\u22B2',
9152
+ 'vartriangleleft': '\u22B2',
9153
+ 'vltri': '\u22B2',
9154
+ 'LeftTriangleBar': '\u29CF',
9155
+ 'LeftTriangleEqual': '\u22B4',
9156
+ 'ltrie': '\u22B4',
9157
+ 'trianglelefteq': '\u22B4',
9158
+ 'LeftUpDownVector': '\u2951',
9159
+ 'LeftUpTeeVector': '\u2960',
9160
+ 'LeftUpVector': '\u21BF',
9161
+ 'uharl': '\u21BF',
9162
+ 'upharpoonleft': '\u21BF',
9163
+ 'LeftUpVectorBar': '\u2958',
9164
+ 'LeftVector': '\u21BC',
9165
+ 'leftharpoonup': '\u21BC',
9166
+ 'lharu': '\u21BC',
9167
+ 'LeftVectorBar': '\u2952',
9168
+ 'LessEqualGreater': '\u22DA',
9169
+ 'leg': '\u22DA',
9170
+ 'lesseqgtr': '\u22DA',
9171
+ 'LessFullEqual': '\u2266',
9172
+ 'lE': '\u2266',
9173
+ 'leqq': '\u2266',
9174
+ 'LessGreater': '\u2276',
9175
+ 'lessgtr': '\u2276',
9176
+ 'lg': '\u2276',
9177
+ 'LessLess': '\u2AA1',
9178
+ 'LessSlantEqual': '\u2A7D',
9179
+ 'leqslant': '\u2A7D',
9180
+ 'les': '\u2A7D',
9181
+ 'LessTilde': '\u2272',
9182
+ 'lesssim': '\u2272',
9183
+ 'lsim': '\u2272',
9184
+ 'Lfr': '\uD835\uDD0F',
9185
+ 'Ll': '\u22D8',
9186
+ 'Lleftarrow': '\u21DA',
9187
+ 'lAarr': '\u21DA',
9188
+ 'Lmidot': '\u013F',
9189
+ 'LongLeftArrow': '\u27F5',
9190
+ 'longleftarrow': '\u27F5',
9191
+ 'xlarr': '\u27F5',
9192
+ 'LongLeftRightArrow': '\u27F7',
9193
+ 'longleftrightarrow': '\u27F7',
9194
+ 'xharr': '\u27F7',
9195
+ 'LongRightArrow': '\u27F6',
9196
+ 'longrightarrow': '\u27F6',
9197
+ 'xrarr': '\u27F6',
9198
+ 'Lopf': '\uD835\uDD43',
9199
+ 'LowerLeftArrow': '\u2199',
9200
+ 'swarr': '\u2199',
9201
+ 'swarrow': '\u2199',
9202
+ 'LowerRightArrow': '\u2198',
9203
+ 'searr': '\u2198',
9204
+ 'searrow': '\u2198',
9205
+ 'Lsh': '\u21B0',
9206
+ 'lsh': '\u21B0',
9207
+ 'Lstrok': '\u0141',
9208
+ 'Lt': '\u226A',
9209
+ 'NestedLessLess': '\u226A',
9210
+ 'll': '\u226A',
9211
+ 'Map': '\u2905',
9212
+ 'Mcy': '\u041C',
9213
+ 'MediumSpace': '\u205F',
9214
+ 'Mellintrf': '\u2133',
9215
+ 'Mscr': '\u2133',
9216
+ 'phmmat': '\u2133',
9217
+ 'Mfr': '\uD835\uDD10',
9218
+ 'MinusPlus': '\u2213',
9219
+ 'mnplus': '\u2213',
9220
+ 'mp': '\u2213',
9221
+ 'Mopf': '\uD835\uDD44',
9222
+ 'Mu': '\u039C',
9223
+ 'NJcy': '\u040A',
9224
+ 'Nacute': '\u0143',
9225
+ 'Ncaron': '\u0147',
9226
+ 'Ncedil': '\u0145',
9227
+ 'Ncy': '\u041D',
9228
+ 'NegativeMediumSpace': '\u200B',
9229
+ 'NegativeThickSpace': '\u200B',
9230
+ 'NegativeThinSpace': '\u200B',
9231
+ 'NegativeVeryThinSpace': '\u200B',
9232
+ 'ZeroWidthSpace': '\u200B',
9233
+ 'NewLine': '\u000A',
9234
+ 'Nfr': '\uD835\uDD11',
9235
+ 'NoBreak': '\u2060',
9236
+ 'NonBreakingSpace': '\u00A0',
9237
+ 'nbsp': '\u00A0',
9238
+ 'Nopf': '\u2115',
9239
+ 'naturals': '\u2115',
9240
+ 'Not': '\u2AEC',
9241
+ 'NotCongruent': '\u2262',
9242
+ 'nequiv': '\u2262',
9243
+ 'NotCupCap': '\u226D',
9244
+ 'NotDoubleVerticalBar': '\u2226',
9245
+ 'npar': '\u2226',
9246
+ 'nparallel': '\u2226',
9247
+ 'nshortparallel': '\u2226',
9248
+ 'nspar': '\u2226',
9249
+ 'NotElement': '\u2209',
9250
+ 'notin': '\u2209',
9251
+ 'notinva': '\u2209',
9252
+ 'NotEqual': '\u2260',
9253
+ 'ne': '\u2260',
9254
+ 'NotEqualTilde': '\u2242\u0338',
9255
+ 'nesim': '\u2242\u0338',
9256
+ 'NotExists': '\u2204',
9257
+ 'nexist': '\u2204',
9258
+ 'nexists': '\u2204',
9259
+ 'NotGreater': '\u226F',
9260
+ 'ngt': '\u226F',
9261
+ 'ngtr': '\u226F',
9262
+ 'NotGreaterEqual': '\u2271',
9263
+ 'nge': '\u2271',
9264
+ 'ngeq': '\u2271',
9265
+ 'NotGreaterFullEqual': '\u2267\u0338',
9266
+ 'ngE': '\u2267\u0338',
9267
+ 'ngeqq': '\u2267\u0338',
9268
+ 'NotGreaterGreater': '\u226B\u0338',
9269
+ 'nGtv': '\u226B\u0338',
9270
+ 'NotGreaterLess': '\u2279',
9271
+ 'ntgl': '\u2279',
9272
+ 'NotGreaterSlantEqual': '\u2A7E\u0338',
9273
+ 'ngeqslant': '\u2A7E\u0338',
9274
+ 'nges': '\u2A7E\u0338',
9275
+ 'NotGreaterTilde': '\u2275',
9276
+ 'ngsim': '\u2275',
9277
+ 'NotHumpDownHump': '\u224E\u0338',
9278
+ 'nbump': '\u224E\u0338',
9279
+ 'NotHumpEqual': '\u224F\u0338',
9280
+ 'nbumpe': '\u224F\u0338',
9281
+ 'NotLeftTriangle': '\u22EA',
9282
+ 'nltri': '\u22EA',
9283
+ 'ntriangleleft': '\u22EA',
9284
+ 'NotLeftTriangleBar': '\u29CF\u0338',
9285
+ 'NotLeftTriangleEqual': '\u22EC',
9286
+ 'nltrie': '\u22EC',
9287
+ 'ntrianglelefteq': '\u22EC',
9288
+ 'NotLess': '\u226E',
9289
+ 'nless': '\u226E',
9290
+ 'nlt': '\u226E',
9291
+ 'NotLessEqual': '\u2270',
9292
+ 'nle': '\u2270',
9293
+ 'nleq': '\u2270',
9294
+ 'NotLessGreater': '\u2278',
9295
+ 'ntlg': '\u2278',
9296
+ 'NotLessLess': '\u226A\u0338',
9297
+ 'nLtv': '\u226A\u0338',
9298
+ 'NotLessSlantEqual': '\u2A7D\u0338',
9299
+ 'nleqslant': '\u2A7D\u0338',
9300
+ 'nles': '\u2A7D\u0338',
9301
+ 'NotLessTilde': '\u2274',
9302
+ 'nlsim': '\u2274',
9303
+ 'NotNestedGreaterGreater': '\u2AA2\u0338',
9304
+ 'NotNestedLessLess': '\u2AA1\u0338',
9305
+ 'NotPrecedes': '\u2280',
9306
+ 'npr': '\u2280',
9307
+ 'nprec': '\u2280',
9308
+ 'NotPrecedesEqual': '\u2AAF\u0338',
9309
+ 'npre': '\u2AAF\u0338',
9310
+ 'npreceq': '\u2AAF\u0338',
9311
+ 'NotPrecedesSlantEqual': '\u22E0',
9312
+ 'nprcue': '\u22E0',
9313
+ 'NotReverseElement': '\u220C',
9314
+ 'notni': '\u220C',
9315
+ 'notniva': '\u220C',
9316
+ 'NotRightTriangle': '\u22EB',
9317
+ 'nrtri': '\u22EB',
9318
+ 'ntriangleright': '\u22EB',
9319
+ 'NotRightTriangleBar': '\u29D0\u0338',
9320
+ 'NotRightTriangleEqual': '\u22ED',
9321
+ 'nrtrie': '\u22ED',
9322
+ 'ntrianglerighteq': '\u22ED',
9323
+ 'NotSquareSubset': '\u228F\u0338',
9324
+ 'NotSquareSubsetEqual': '\u22E2',
9325
+ 'nsqsube': '\u22E2',
9326
+ 'NotSquareSuperset': '\u2290\u0338',
9327
+ 'NotSquareSupersetEqual': '\u22E3',
9328
+ 'nsqsupe': '\u22E3',
9329
+ 'NotSubset': '\u2282\u20D2',
9330
+ 'nsubset': '\u2282\u20D2',
9331
+ 'vnsub': '\u2282\u20D2',
9332
+ 'NotSubsetEqual': '\u2288',
9333
+ 'nsube': '\u2288',
9334
+ 'nsubseteq': '\u2288',
9335
+ 'NotSucceeds': '\u2281',
9336
+ 'nsc': '\u2281',
9337
+ 'nsucc': '\u2281',
9338
+ 'NotSucceedsEqual': '\u2AB0\u0338',
9339
+ 'nsce': '\u2AB0\u0338',
9340
+ 'nsucceq': '\u2AB0\u0338',
9341
+ 'NotSucceedsSlantEqual': '\u22E1',
9342
+ 'nsccue': '\u22E1',
9343
+ 'NotSucceedsTilde': '\u227F\u0338',
9344
+ 'NotSuperset': '\u2283\u20D2',
9345
+ 'nsupset': '\u2283\u20D2',
9346
+ 'vnsup': '\u2283\u20D2',
9347
+ 'NotSupersetEqual': '\u2289',
9348
+ 'nsupe': '\u2289',
9349
+ 'nsupseteq': '\u2289',
9350
+ 'NotTilde': '\u2241',
9351
+ 'nsim': '\u2241',
9352
+ 'NotTildeEqual': '\u2244',
9353
+ 'nsime': '\u2244',
9354
+ 'nsimeq': '\u2244',
9355
+ 'NotTildeFullEqual': '\u2247',
9356
+ 'ncong': '\u2247',
9357
+ 'NotTildeTilde': '\u2249',
9358
+ 'nap': '\u2249',
9359
+ 'napprox': '\u2249',
9360
+ 'NotVerticalBar': '\u2224',
9361
+ 'nmid': '\u2224',
9362
+ 'nshortmid': '\u2224',
9363
+ 'nsmid': '\u2224',
9364
+ 'Nscr': '\uD835\uDCA9',
9365
+ 'Ntilde': '\u00D1',
9366
+ 'Nu': '\u039D',
9367
+ 'OElig': '\u0152',
9368
+ 'Oacute': '\u00D3',
9369
+ 'Ocirc': '\u00D4',
9370
+ 'Ocy': '\u041E',
9371
+ 'Odblac': '\u0150',
9372
+ 'Ofr': '\uD835\uDD12',
9373
+ 'Ograve': '\u00D2',
9374
+ 'Omacr': '\u014C',
9375
+ 'Omega': '\u03A9',
9376
+ 'ohm': '\u03A9',
9377
+ 'Omicron': '\u039F',
9378
+ 'Oopf': '\uD835\uDD46',
9379
+ 'OpenCurlyDoubleQuote': '\u201C',
9380
+ 'ldquo': '\u201C',
9381
+ 'OpenCurlyQuote': '\u2018',
9382
+ 'lsquo': '\u2018',
9383
+ 'Or': '\u2A54',
9384
+ 'Oscr': '\uD835\uDCAA',
9385
+ 'Oslash': '\u00D8',
9386
+ 'Otilde': '\u00D5',
9387
+ 'Otimes': '\u2A37',
9388
+ 'Ouml': '\u00D6',
9389
+ 'OverBar': '\u203E',
9390
+ 'oline': '\u203E',
9391
+ 'OverBrace': '\u23DE',
9392
+ 'OverBracket': '\u23B4',
9393
+ 'tbrk': '\u23B4',
9394
+ 'OverParenthesis': '\u23DC',
9395
+ 'PartialD': '\u2202',
9396
+ 'part': '\u2202',
9397
+ 'Pcy': '\u041F',
9398
+ 'Pfr': '\uD835\uDD13',
9399
+ 'Phi': '\u03A6',
9400
+ 'Pi': '\u03A0',
9401
+ 'PlusMinus': '\u00B1',
9402
+ 'plusmn': '\u00B1',
9403
+ 'pm': '\u00B1',
9404
+ 'Popf': '\u2119',
9405
+ 'primes': '\u2119',
9406
+ 'Pr': '\u2ABB',
9407
+ 'Precedes': '\u227A',
9408
+ 'pr': '\u227A',
9409
+ 'prec': '\u227A',
9410
+ 'PrecedesEqual': '\u2AAF',
9411
+ 'pre': '\u2AAF',
9412
+ 'preceq': '\u2AAF',
9413
+ 'PrecedesSlantEqual': '\u227C',
9414
+ 'prcue': '\u227C',
9415
+ 'preccurlyeq': '\u227C',
9416
+ 'PrecedesTilde': '\u227E',
9417
+ 'precsim': '\u227E',
9418
+ 'prsim': '\u227E',
9419
+ 'Prime': '\u2033',
9420
+ 'Product': '\u220F',
9421
+ 'prod': '\u220F',
9422
+ 'Proportional': '\u221D',
9423
+ 'prop': '\u221D',
9424
+ 'propto': '\u221D',
9425
+ 'varpropto': '\u221D',
9426
+ 'vprop': '\u221D',
9427
+ 'Pscr': '\uD835\uDCAB',
9428
+ 'Psi': '\u03A8',
9429
+ 'QUOT': '\u0022',
9430
+ 'quot': '\u0022',
9431
+ 'Qfr': '\uD835\uDD14',
9432
+ 'Qopf': '\u211A',
9433
+ 'rationals': '\u211A',
9434
+ 'Qscr': '\uD835\uDCAC',
9435
+ 'RBarr': '\u2910',
9436
+ 'drbkarow': '\u2910',
9437
+ 'REG': '\u00AE',
9438
+ 'circledR': '\u00AE',
9439
+ 'reg': '\u00AE',
9440
+ 'Racute': '\u0154',
9441
+ 'Rang': '\u27EB',
9442
+ 'Rarr': '\u21A0',
9443
+ 'twoheadrightarrow': '\u21A0',
9444
+ 'Rarrtl': '\u2916',
9445
+ 'Rcaron': '\u0158',
9446
+ 'Rcedil': '\u0156',
9447
+ 'Rcy': '\u0420',
9448
+ 'Re': '\u211C',
9449
+ 'Rfr': '\u211C',
9450
+ 'real': '\u211C',
9451
+ 'realpart': '\u211C',
9452
+ 'ReverseElement': '\u220B',
9453
+ 'SuchThat': '\u220B',
9454
+ 'ni': '\u220B',
9455
+ 'niv': '\u220B',
9456
+ 'ReverseEquilibrium': '\u21CB',
9457
+ 'leftrightharpoons': '\u21CB',
9458
+ 'lrhar': '\u21CB',
9459
+ 'ReverseUpEquilibrium': '\u296F',
9460
+ 'duhar': '\u296F',
9461
+ 'Rho': '\u03A1',
9462
+ 'RightAngleBracket': '\u27E9',
9463
+ 'rang': '\u27E9',
9464
+ 'rangle': '\u27E9',
9465
+ 'RightArrow': '\u2192',
9466
+ 'ShortRightArrow': '\u2192',
9467
+ 'rarr': '\u2192',
9468
+ 'rightarrow': '\u2192',
9469
+ 'srarr': '\u2192',
9470
+ 'RightArrowBar': '\u21E5',
9471
+ 'rarrb': '\u21E5',
9472
+ 'RightArrowLeftArrow': '\u21C4',
9473
+ 'rightleftarrows': '\u21C4',
9474
+ 'rlarr': '\u21C4',
9475
+ 'RightCeiling': '\u2309',
9476
+ 'rceil': '\u2309',
9477
+ 'RightDoubleBracket': '\u27E7',
9478
+ 'robrk': '\u27E7',
9479
+ 'RightDownTeeVector': '\u295D',
9480
+ 'RightDownVector': '\u21C2',
9481
+ 'dharr': '\u21C2',
9482
+ 'downharpoonright': '\u21C2',
9483
+ 'RightDownVectorBar': '\u2955',
9484
+ 'RightFloor': '\u230B',
9485
+ 'rfloor': '\u230B',
9486
+ 'RightTee': '\u22A2',
9487
+ 'vdash': '\u22A2',
9488
+ 'RightTeeArrow': '\u21A6',
9489
+ 'map': '\u21A6',
9490
+ 'mapsto': '\u21A6',
9491
+ 'RightTeeVector': '\u295B',
9492
+ 'RightTriangle': '\u22B3',
9493
+ 'vartriangleright': '\u22B3',
9494
+ 'vrtri': '\u22B3',
9495
+ 'RightTriangleBar': '\u29D0',
9496
+ 'RightTriangleEqual': '\u22B5',
9497
+ 'rtrie': '\u22B5',
9498
+ 'trianglerighteq': '\u22B5',
9499
+ 'RightUpDownVector': '\u294F',
9500
+ 'RightUpTeeVector': '\u295C',
9501
+ 'RightUpVector': '\u21BE',
9502
+ 'uharr': '\u21BE',
9503
+ 'upharpoonright': '\u21BE',
9504
+ 'RightUpVectorBar': '\u2954',
9505
+ 'RightVector': '\u21C0',
9506
+ 'rharu': '\u21C0',
9507
+ 'rightharpoonup': '\u21C0',
9508
+ 'RightVectorBar': '\u2953',
9509
+ 'Ropf': '\u211D',
9510
+ 'reals': '\u211D',
9511
+ 'RoundImplies': '\u2970',
9512
+ 'Rrightarrow': '\u21DB',
9513
+ 'rAarr': '\u21DB',
9514
+ 'Rscr': '\u211B',
9515
+ 'realine': '\u211B',
9516
+ 'Rsh': '\u21B1',
9517
+ 'rsh': '\u21B1',
9518
+ 'RuleDelayed': '\u29F4',
9519
+ 'SHCHcy': '\u0429',
9520
+ 'SHcy': '\u0428',
9521
+ 'SOFTcy': '\u042C',
9522
+ 'Sacute': '\u015A',
9523
+ 'Sc': '\u2ABC',
9524
+ 'Scaron': '\u0160',
9525
+ 'Scedil': '\u015E',
9526
+ 'Scirc': '\u015C',
9527
+ 'Scy': '\u0421',
9528
+ 'Sfr': '\uD835\uDD16',
9529
+ 'ShortUpArrow': '\u2191',
9530
+ 'UpArrow': '\u2191',
9531
+ 'uarr': '\u2191',
9532
+ 'uparrow': '\u2191',
9533
+ 'Sigma': '\u03A3',
9534
+ 'SmallCircle': '\u2218',
9535
+ 'compfn': '\u2218',
9536
+ 'Sopf': '\uD835\uDD4A',
9537
+ 'Sqrt': '\u221A',
9538
+ 'radic': '\u221A',
9539
+ 'Square': '\u25A1',
9540
+ 'squ': '\u25A1',
9541
+ 'square': '\u25A1',
9542
+ 'SquareIntersection': '\u2293',
9543
+ 'sqcap': '\u2293',
9544
+ 'SquareSubset': '\u228F',
9545
+ 'sqsub': '\u228F',
9546
+ 'sqsubset': '\u228F',
9547
+ 'SquareSubsetEqual': '\u2291',
9548
+ 'sqsube': '\u2291',
9549
+ 'sqsubseteq': '\u2291',
9550
+ 'SquareSuperset': '\u2290',
9551
+ 'sqsup': '\u2290',
9552
+ 'sqsupset': '\u2290',
9553
+ 'SquareSupersetEqual': '\u2292',
9554
+ 'sqsupe': '\u2292',
9555
+ 'sqsupseteq': '\u2292',
9556
+ 'SquareUnion': '\u2294',
9557
+ 'sqcup': '\u2294',
9558
+ 'Sscr': '\uD835\uDCAE',
9559
+ 'Star': '\u22C6',
9560
+ 'sstarf': '\u22C6',
9561
+ 'Sub': '\u22D0',
9562
+ 'Subset': '\u22D0',
9563
+ 'SubsetEqual': '\u2286',
9564
+ 'sube': '\u2286',
9565
+ 'subseteq': '\u2286',
9566
+ 'Succeeds': '\u227B',
9567
+ 'sc': '\u227B',
9568
+ 'succ': '\u227B',
9569
+ 'SucceedsEqual': '\u2AB0',
9570
+ 'sce': '\u2AB0',
9571
+ 'succeq': '\u2AB0',
9572
+ 'SucceedsSlantEqual': '\u227D',
9573
+ 'sccue': '\u227D',
9574
+ 'succcurlyeq': '\u227D',
9575
+ 'SucceedsTilde': '\u227F',
9576
+ 'scsim': '\u227F',
9577
+ 'succsim': '\u227F',
9578
+ 'Sum': '\u2211',
9579
+ 'sum': '\u2211',
9580
+ 'Sup': '\u22D1',
9581
+ 'Supset': '\u22D1',
9582
+ 'Superset': '\u2283',
9583
+ 'sup': '\u2283',
9584
+ 'supset': '\u2283',
9585
+ 'SupersetEqual': '\u2287',
9586
+ 'supe': '\u2287',
9587
+ 'supseteq': '\u2287',
9588
+ 'THORN': '\u00DE',
9589
+ 'TRADE': '\u2122',
9590
+ 'trade': '\u2122',
9591
+ 'TSHcy': '\u040B',
9592
+ 'TScy': '\u0426',
9593
+ 'Tab': '\u0009',
9594
+ 'Tau': '\u03A4',
9595
+ 'Tcaron': '\u0164',
9596
+ 'Tcedil': '\u0162',
9597
+ 'Tcy': '\u0422',
9598
+ 'Tfr': '\uD835\uDD17',
9599
+ 'Therefore': '\u2234',
9600
+ 'there4': '\u2234',
9601
+ 'therefore': '\u2234',
9602
+ 'Theta': '\u0398',
9603
+ 'ThickSpace': '\u205F\u200A',
9604
+ 'ThinSpace': '\u2009',
9605
+ 'thinsp': '\u2009',
9606
+ 'Tilde': '\u223C',
9607
+ 'sim': '\u223C',
9608
+ 'thicksim': '\u223C',
9609
+ 'thksim': '\u223C',
9610
+ 'TildeEqual': '\u2243',
9611
+ 'sime': '\u2243',
9612
+ 'simeq': '\u2243',
9613
+ 'TildeFullEqual': '\u2245',
9614
+ 'cong': '\u2245',
9615
+ 'TildeTilde': '\u2248',
9616
+ 'ap': '\u2248',
9617
+ 'approx': '\u2248',
9618
+ 'asymp': '\u2248',
9619
+ 'thickapprox': '\u2248',
9620
+ 'thkap': '\u2248',
9621
+ 'Topf': '\uD835\uDD4B',
9622
+ 'TripleDot': '\u20DB',
9623
+ 'tdot': '\u20DB',
9624
+ 'Tscr': '\uD835\uDCAF',
9625
+ 'Tstrok': '\u0166',
9626
+ 'Uacute': '\u00DA',
9627
+ 'Uarr': '\u219F',
9628
+ 'Uarrocir': '\u2949',
9629
+ 'Ubrcy': '\u040E',
9630
+ 'Ubreve': '\u016C',
9631
+ 'Ucirc': '\u00DB',
9632
+ 'Ucy': '\u0423',
9633
+ 'Udblac': '\u0170',
9634
+ 'Ufr': '\uD835\uDD18',
9635
+ 'Ugrave': '\u00D9',
9636
+ 'Umacr': '\u016A',
9637
+ 'UnderBar': '\u005F',
9638
+ 'lowbar': '\u005F',
9639
+ 'UnderBrace': '\u23DF',
9640
+ 'UnderBracket': '\u23B5',
9641
+ 'bbrk': '\u23B5',
9642
+ 'UnderParenthesis': '\u23DD',
9643
+ 'Union': '\u22C3',
9644
+ 'bigcup': '\u22C3',
9645
+ 'xcup': '\u22C3',
9646
+ 'UnionPlus': '\u228E',
9647
+ 'uplus': '\u228E',
9648
+ 'Uogon': '\u0172',
9649
+ 'Uopf': '\uD835\uDD4C',
9650
+ 'UpArrowBar': '\u2912',
9651
+ 'UpArrowDownArrow': '\u21C5',
9652
+ 'udarr': '\u21C5',
9653
+ 'UpDownArrow': '\u2195',
9654
+ 'updownarrow': '\u2195',
9655
+ 'varr': '\u2195',
9656
+ 'UpEquilibrium': '\u296E',
9657
+ 'udhar': '\u296E',
9658
+ 'UpTee': '\u22A5',
9659
+ 'bot': '\u22A5',
9660
+ 'bottom': '\u22A5',
9661
+ 'perp': '\u22A5',
9662
+ 'UpTeeArrow': '\u21A5',
9663
+ 'mapstoup': '\u21A5',
9664
+ 'UpperLeftArrow': '\u2196',
9665
+ 'nwarr': '\u2196',
9666
+ 'nwarrow': '\u2196',
9667
+ 'UpperRightArrow': '\u2197',
9668
+ 'nearr': '\u2197',
9669
+ 'nearrow': '\u2197',
9670
+ 'Upsi': '\u03D2',
9671
+ 'upsih': '\u03D2',
9672
+ 'Upsilon': '\u03A5',
9673
+ 'Uring': '\u016E',
9674
+ 'Uscr': '\uD835\uDCB0',
9675
+ 'Utilde': '\u0168',
9676
+ 'Uuml': '\u00DC',
9677
+ 'VDash': '\u22AB',
9678
+ 'Vbar': '\u2AEB',
9679
+ 'Vcy': '\u0412',
9680
+ 'Vdash': '\u22A9',
9681
+ 'Vdashl': '\u2AE6',
9682
+ 'Vee': '\u22C1',
9683
+ 'bigvee': '\u22C1',
9684
+ 'xvee': '\u22C1',
9685
+ 'Verbar': '\u2016',
9686
+ 'Vert': '\u2016',
9687
+ 'VerticalBar': '\u2223',
9688
+ 'mid': '\u2223',
9689
+ 'shortmid': '\u2223',
9690
+ 'smid': '\u2223',
9691
+ 'VerticalLine': '\u007C',
9692
+ 'verbar': '\u007C',
9693
+ 'vert': '\u007C',
9694
+ 'VerticalSeparator': '\u2758',
9695
+ 'VerticalTilde': '\u2240',
9696
+ 'wr': '\u2240',
9697
+ 'wreath': '\u2240',
9698
+ 'VeryThinSpace': '\u200A',
9699
+ 'hairsp': '\u200A',
9700
+ 'Vfr': '\uD835\uDD19',
9701
+ 'Vopf': '\uD835\uDD4D',
9702
+ 'Vscr': '\uD835\uDCB1',
9703
+ 'Vvdash': '\u22AA',
9704
+ 'Wcirc': '\u0174',
9705
+ 'Wedge': '\u22C0',
9706
+ 'bigwedge': '\u22C0',
9707
+ 'xwedge': '\u22C0',
9708
+ 'Wfr': '\uD835\uDD1A',
9709
+ 'Wopf': '\uD835\uDD4E',
9710
+ 'Wscr': '\uD835\uDCB2',
9711
+ 'Xfr': '\uD835\uDD1B',
9712
+ 'Xi': '\u039E',
9713
+ 'Xopf': '\uD835\uDD4F',
9714
+ 'Xscr': '\uD835\uDCB3',
9715
+ 'YAcy': '\u042F',
9716
+ 'YIcy': '\u0407',
9717
+ 'YUcy': '\u042E',
9718
+ 'Yacute': '\u00DD',
9719
+ 'Ycirc': '\u0176',
9720
+ 'Ycy': '\u042B',
9721
+ 'Yfr': '\uD835\uDD1C',
9722
+ 'Yopf': '\uD835\uDD50',
9723
+ 'Yscr': '\uD835\uDCB4',
9724
+ 'Yuml': '\u0178',
9725
+ 'ZHcy': '\u0416',
9726
+ 'Zacute': '\u0179',
9727
+ 'Zcaron': '\u017D',
9728
+ 'Zcy': '\u0417',
9729
+ 'Zdot': '\u017B',
9730
+ 'Zeta': '\u0396',
9731
+ 'Zfr': '\u2128',
9732
+ 'zeetrf': '\u2128',
9733
+ 'Zopf': '\u2124',
9734
+ 'integers': '\u2124',
9735
+ 'Zscr': '\uD835\uDCB5',
9736
+ 'aacute': '\u00E1',
9737
+ 'abreve': '\u0103',
9738
+ 'ac': '\u223E',
9739
+ 'mstpos': '\u223E',
9740
+ 'acE': '\u223E\u0333',
9741
+ 'acd': '\u223F',
9742
+ 'acirc': '\u00E2',
9743
+ 'acy': '\u0430',
9744
+ 'aelig': '\u00E6',
9745
+ 'afr': '\uD835\uDD1E',
9746
+ 'agrave': '\u00E0',
9747
+ 'alefsym': '\u2135',
9748
+ 'aleph': '\u2135',
9749
+ 'alpha': '\u03B1',
9750
+ 'amacr': '\u0101',
9751
+ 'amalg': '\u2A3F',
9752
+ 'and': '\u2227',
9753
+ 'wedge': '\u2227',
9754
+ 'andand': '\u2A55',
9755
+ 'andd': '\u2A5C',
9756
+ 'andslope': '\u2A58',
9757
+ 'andv': '\u2A5A',
9758
+ 'ang': '\u2220',
9759
+ 'angle': '\u2220',
9760
+ 'ange': '\u29A4',
9761
+ 'angmsd': '\u2221',
9762
+ 'measuredangle': '\u2221',
9763
+ 'angmsdaa': '\u29A8',
9764
+ 'angmsdab': '\u29A9',
9765
+ 'angmsdac': '\u29AA',
9766
+ 'angmsdad': '\u29AB',
9767
+ 'angmsdae': '\u29AC',
9768
+ 'angmsdaf': '\u29AD',
9769
+ 'angmsdag': '\u29AE',
9770
+ 'angmsdah': '\u29AF',
9771
+ 'angrt': '\u221F',
9772
+ 'angrtvb': '\u22BE',
9773
+ 'angrtvbd': '\u299D',
9774
+ 'angsph': '\u2222',
9775
+ 'angzarr': '\u237C',
9776
+ 'aogon': '\u0105',
9777
+ 'aopf': '\uD835\uDD52',
9778
+ 'apE': '\u2A70',
9779
+ 'apacir': '\u2A6F',
9780
+ 'ape': '\u224A',
9781
+ 'approxeq': '\u224A',
9782
+ 'apid': '\u224B',
9783
+ 'apos': '\u0027',
9784
+ 'aring': '\u00E5',
9785
+ 'ascr': '\uD835\uDCB6',
9786
+ 'ast': '\u002A',
9787
+ 'midast': '\u002A',
9788
+ 'atilde': '\u00E3',
9789
+ 'auml': '\u00E4',
9790
+ 'awint': '\u2A11',
9791
+ 'bNot': '\u2AED',
9792
+ 'backcong': '\u224C',
9793
+ 'bcong': '\u224C',
9794
+ 'backepsilon': '\u03F6',
9795
+ 'bepsi': '\u03F6',
9796
+ 'backprime': '\u2035',
9797
+ 'bprime': '\u2035',
9798
+ 'backsim': '\u223D',
9799
+ 'bsim': '\u223D',
9800
+ 'backsimeq': '\u22CD',
9801
+ 'bsime': '\u22CD',
9802
+ 'barvee': '\u22BD',
9803
+ 'barwed': '\u2305',
9804
+ 'barwedge': '\u2305',
9805
+ 'bbrktbrk': '\u23B6',
9806
+ 'bcy': '\u0431',
9807
+ 'bdquo': '\u201E',
9808
+ 'ldquor': '\u201E',
9809
+ 'bemptyv': '\u29B0',
9810
+ 'beta': '\u03B2',
9811
+ 'beth': '\u2136',
9812
+ 'between': '\u226C',
9813
+ 'twixt': '\u226C',
9814
+ 'bfr': '\uD835\uDD1F',
9815
+ 'bigcirc': '\u25EF',
9816
+ 'xcirc': '\u25EF',
9817
+ 'bigodot': '\u2A00',
9818
+ 'xodot': '\u2A00',
9819
+ 'bigoplus': '\u2A01',
9820
+ 'xoplus': '\u2A01',
9821
+ 'bigotimes': '\u2A02',
9822
+ 'xotime': '\u2A02',
9823
+ 'bigsqcup': '\u2A06',
9824
+ 'xsqcup': '\u2A06',
9825
+ 'bigstar': '\u2605',
9826
+ 'starf': '\u2605',
9827
+ 'bigtriangledown': '\u25BD',
9828
+ 'xdtri': '\u25BD',
9829
+ 'bigtriangleup': '\u25B3',
9830
+ 'xutri': '\u25B3',
9831
+ 'biguplus': '\u2A04',
9832
+ 'xuplus': '\u2A04',
9833
+ 'bkarow': '\u290D',
9834
+ 'rbarr': '\u290D',
9835
+ 'blacklozenge': '\u29EB',
9836
+ 'lozf': '\u29EB',
9837
+ 'blacktriangle': '\u25B4',
9838
+ 'utrif': '\u25B4',
9839
+ 'blacktriangledown': '\u25BE',
9840
+ 'dtrif': '\u25BE',
9841
+ 'blacktriangleleft': '\u25C2',
9842
+ 'ltrif': '\u25C2',
9843
+ 'blacktriangleright': '\u25B8',
9844
+ 'rtrif': '\u25B8',
9845
+ 'blank': '\u2423',
9846
+ 'blk12': '\u2592',
9847
+ 'blk14': '\u2591',
9848
+ 'blk34': '\u2593',
9849
+ 'block': '\u2588',
9850
+ 'bne': '\u003D\u20E5',
9851
+ 'bnequiv': '\u2261\u20E5',
9852
+ 'bnot': '\u2310',
9853
+ 'bopf': '\uD835\uDD53',
9854
+ 'bowtie': '\u22C8',
9855
+ 'boxDL': '\u2557',
9856
+ 'boxDR': '\u2554',
9857
+ 'boxDl': '\u2556',
9858
+ 'boxDr': '\u2553',
9859
+ 'boxH': '\u2550',
9860
+ 'boxHD': '\u2566',
9861
+ 'boxHU': '\u2569',
9862
+ 'boxHd': '\u2564',
9863
+ 'boxHu': '\u2567',
9864
+ 'boxUL': '\u255D',
9865
+ 'boxUR': '\u255A',
9866
+ 'boxUl': '\u255C',
9867
+ 'boxUr': '\u2559',
9868
+ 'boxV': '\u2551',
9869
+ 'boxVH': '\u256C',
9870
+ 'boxVL': '\u2563',
9871
+ 'boxVR': '\u2560',
9872
+ 'boxVh': '\u256B',
9873
+ 'boxVl': '\u2562',
9874
+ 'boxVr': '\u255F',
9875
+ 'boxbox': '\u29C9',
9876
+ 'boxdL': '\u2555',
9877
+ 'boxdR': '\u2552',
9878
+ 'boxdl': '\u2510',
9879
+ 'boxdr': '\u250C',
9880
+ 'boxhD': '\u2565',
9881
+ 'boxhU': '\u2568',
9882
+ 'boxhd': '\u252C',
9883
+ 'boxhu': '\u2534',
9884
+ 'boxminus': '\u229F',
9885
+ 'minusb': '\u229F',
9886
+ 'boxplus': '\u229E',
9887
+ 'plusb': '\u229E',
9888
+ 'boxtimes': '\u22A0',
9889
+ 'timesb': '\u22A0',
9890
+ 'boxuL': '\u255B',
9891
+ 'boxuR': '\u2558',
9892
+ 'boxul': '\u2518',
9893
+ 'boxur': '\u2514',
9894
+ 'boxv': '\u2502',
9895
+ 'boxvH': '\u256A',
9896
+ 'boxvL': '\u2561',
9897
+ 'boxvR': '\u255E',
9898
+ 'boxvh': '\u253C',
9899
+ 'boxvl': '\u2524',
9900
+ 'boxvr': '\u251C',
9901
+ 'brvbar': '\u00A6',
9902
+ 'bscr': '\uD835\uDCB7',
9903
+ 'bsemi': '\u204F',
9904
+ 'bsol': '\u005C',
9905
+ 'bsolb': '\u29C5',
9906
+ 'bsolhsub': '\u27C8',
9907
+ 'bull': '\u2022',
9908
+ 'bullet': '\u2022',
9909
+ 'bumpE': '\u2AAE',
9910
+ 'cacute': '\u0107',
9911
+ 'cap': '\u2229',
9912
+ 'capand': '\u2A44',
9913
+ 'capbrcup': '\u2A49',
9914
+ 'capcap': '\u2A4B',
9915
+ 'capcup': '\u2A47',
9916
+ 'capdot': '\u2A40',
9917
+ 'caps': '\u2229\uFE00',
9918
+ 'caret': '\u2041',
9919
+ 'ccaps': '\u2A4D',
9920
+ 'ccaron': '\u010D',
9921
+ 'ccedil': '\u00E7',
9922
+ 'ccirc': '\u0109',
9923
+ 'ccups': '\u2A4C',
9924
+ 'ccupssm': '\u2A50',
9925
+ 'cdot': '\u010B',
9926
+ 'cemptyv': '\u29B2',
9927
+ 'cent': '\u00A2',
9928
+ 'cfr': '\uD835\uDD20',
9929
+ 'chcy': '\u0447',
9930
+ 'check': '\u2713',
9931
+ 'checkmark': '\u2713',
9932
+ 'chi': '\u03C7',
9933
+ 'cir': '\u25CB',
9934
+ 'cirE': '\u29C3',
9935
+ 'circ': '\u02C6',
9936
+ 'circeq': '\u2257',
9937
+ 'cire': '\u2257',
9938
+ 'circlearrowleft': '\u21BA',
9939
+ 'olarr': '\u21BA',
9940
+ 'circlearrowright': '\u21BB',
9941
+ 'orarr': '\u21BB',
9942
+ 'circledS': '\u24C8',
9943
+ 'oS': '\u24C8',
9944
+ 'circledast': '\u229B',
9945
+ 'oast': '\u229B',
9946
+ 'circledcirc': '\u229A',
9947
+ 'ocir': '\u229A',
9948
+ 'circleddash': '\u229D',
9949
+ 'odash': '\u229D',
9950
+ 'cirfnint': '\u2A10',
9951
+ 'cirmid': '\u2AEF',
9952
+ 'cirscir': '\u29C2',
9953
+ 'clubs': '\u2663',
9954
+ 'clubsuit': '\u2663',
9955
+ 'colon': '\u003A',
9956
+ 'comma': '\u002C',
9957
+ 'commat': '\u0040',
9958
+ 'comp': '\u2201',
9959
+ 'complement': '\u2201',
9960
+ 'congdot': '\u2A6D',
9961
+ 'copf': '\uD835\uDD54',
9962
+ 'copysr': '\u2117',
9963
+ 'crarr': '\u21B5',
9964
+ 'cross': '\u2717',
9965
+ 'cscr': '\uD835\uDCB8',
9966
+ 'csub': '\u2ACF',
9967
+ 'csube': '\u2AD1',
9968
+ 'csup': '\u2AD0',
9969
+ 'csupe': '\u2AD2',
9970
+ 'ctdot': '\u22EF',
9971
+ 'cudarrl': '\u2938',
9972
+ 'cudarrr': '\u2935',
9973
+ 'cuepr': '\u22DE',
9974
+ 'curlyeqprec': '\u22DE',
9975
+ 'cuesc': '\u22DF',
9976
+ 'curlyeqsucc': '\u22DF',
9977
+ 'cularr': '\u21B6',
9978
+ 'curvearrowleft': '\u21B6',
9979
+ 'cularrp': '\u293D',
9980
+ 'cup': '\u222A',
9981
+ 'cupbrcap': '\u2A48',
9982
+ 'cupcap': '\u2A46',
9983
+ 'cupcup': '\u2A4A',
9984
+ 'cupdot': '\u228D',
9985
+ 'cupor': '\u2A45',
9986
+ 'cups': '\u222A\uFE00',
9987
+ 'curarr': '\u21B7',
9988
+ 'curvearrowright': '\u21B7',
9989
+ 'curarrm': '\u293C',
9990
+ 'curlyvee': '\u22CE',
9991
+ 'cuvee': '\u22CE',
9992
+ 'curlywedge': '\u22CF',
9993
+ 'cuwed': '\u22CF',
9994
+ 'curren': '\u00A4',
9995
+ 'cwint': '\u2231',
9996
+ 'cylcty': '\u232D',
9997
+ 'dHar': '\u2965',
9998
+ 'dagger': '\u2020',
9999
+ 'daleth': '\u2138',
10000
+ 'dash': '\u2010',
10001
+ 'hyphen': '\u2010',
10002
+ 'dbkarow': '\u290F',
10003
+ 'rBarr': '\u290F',
10004
+ 'dcaron': '\u010F',
10005
+ 'dcy': '\u0434',
10006
+ 'ddarr': '\u21CA',
10007
+ 'downdownarrows': '\u21CA',
10008
+ 'ddotseq': '\u2A77',
10009
+ 'eDDot': '\u2A77',
10010
+ 'deg': '\u00B0',
10011
+ 'delta': '\u03B4',
10012
+ 'demptyv': '\u29B1',
10013
+ 'dfisht': '\u297F',
10014
+ 'dfr': '\uD835\uDD21',
10015
+ 'diamondsuit': '\u2666',
10016
+ 'diams': '\u2666',
10017
+ 'digamma': '\u03DD',
10018
+ 'gammad': '\u03DD',
10019
+ 'disin': '\u22F2',
10020
+ 'div': '\u00F7',
10021
+ 'divide': '\u00F7',
10022
+ 'divideontimes': '\u22C7',
10023
+ 'divonx': '\u22C7',
10024
+ 'djcy': '\u0452',
10025
+ 'dlcorn': '\u231E',
10026
+ 'llcorner': '\u231E',
10027
+ 'dlcrop': '\u230D',
10028
+ 'dollar': '\u0024',
10029
+ 'dopf': '\uD835\uDD55',
10030
+ 'doteqdot': '\u2251',
10031
+ 'eDot': '\u2251',
10032
+ 'dotminus': '\u2238',
10033
+ 'minusd': '\u2238',
10034
+ 'dotplus': '\u2214',
10035
+ 'plusdo': '\u2214',
10036
+ 'dotsquare': '\u22A1',
10037
+ 'sdotb': '\u22A1',
10038
+ 'drcorn': '\u231F',
10039
+ 'lrcorner': '\u231F',
10040
+ 'drcrop': '\u230C',
10041
+ 'dscr': '\uD835\uDCB9',
10042
+ 'dscy': '\u0455',
10043
+ 'dsol': '\u29F6',
10044
+ 'dstrok': '\u0111',
10045
+ 'dtdot': '\u22F1',
10046
+ 'dtri': '\u25BF',
10047
+ 'triangledown': '\u25BF',
10048
+ 'dwangle': '\u29A6',
10049
+ 'dzcy': '\u045F',
10050
+ 'dzigrarr': '\u27FF',
10051
+ 'eacute': '\u00E9',
10052
+ 'easter': '\u2A6E',
10053
+ 'ecaron': '\u011B',
10054
+ 'ecir': '\u2256',
10055
+ 'eqcirc': '\u2256',
10056
+ 'ecirc': '\u00EA',
10057
+ 'ecolon': '\u2255',
10058
+ 'eqcolon': '\u2255',
10059
+ 'ecy': '\u044D',
10060
+ 'edot': '\u0117',
10061
+ 'efDot': '\u2252',
10062
+ 'fallingdotseq': '\u2252',
10063
+ 'efr': '\uD835\uDD22',
10064
+ 'eg': '\u2A9A',
10065
+ 'egrave': '\u00E8',
10066
+ 'egs': '\u2A96',
10067
+ 'eqslantgtr': '\u2A96',
10068
+ 'egsdot': '\u2A98',
10069
+ 'el': '\u2A99',
10070
+ 'elinters': '\u23E7',
10071
+ 'ell': '\u2113',
10072
+ 'els': '\u2A95',
10073
+ 'eqslantless': '\u2A95',
10074
+ 'elsdot': '\u2A97',
10075
+ 'emacr': '\u0113',
10076
+ 'empty': '\u2205',
10077
+ 'emptyset': '\u2205',
10078
+ 'emptyv': '\u2205',
10079
+ 'varnothing': '\u2205',
10080
+ 'emsp13': '\u2004',
10081
+ 'emsp14': '\u2005',
10082
+ 'emsp': '\u2003',
10083
+ 'eng': '\u014B',
10084
+ 'ensp': '\u2002',
10085
+ 'eogon': '\u0119',
10086
+ 'eopf': '\uD835\uDD56',
10087
+ 'epar': '\u22D5',
10088
+ 'eparsl': '\u29E3',
10089
+ 'eplus': '\u2A71',
10090
+ 'epsi': '\u03B5',
10091
+ 'epsilon': '\u03B5',
10092
+ 'epsiv': '\u03F5',
10093
+ 'straightepsilon': '\u03F5',
10094
+ 'varepsilon': '\u03F5',
10095
+ 'equals': '\u003D',
10096
+ 'equest': '\u225F',
10097
+ 'questeq': '\u225F',
10098
+ 'equivDD': '\u2A78',
10099
+ 'eqvparsl': '\u29E5',
10100
+ 'erDot': '\u2253',
10101
+ 'risingdotseq': '\u2253',
10102
+ 'erarr': '\u2971',
10103
+ 'escr': '\u212F',
10104
+ 'eta': '\u03B7',
10105
+ 'eth': '\u00F0',
10106
+ 'euml': '\u00EB',
10107
+ 'euro': '\u20AC',
10108
+ 'excl': '\u0021',
10109
+ 'fcy': '\u0444',
10110
+ 'female': '\u2640',
10111
+ 'ffilig': '\uFB03',
10112
+ 'fflig': '\uFB00',
10113
+ 'ffllig': '\uFB04',
10114
+ 'ffr': '\uD835\uDD23',
10115
+ 'filig': '\uFB01',
10116
+ 'fjlig': '\u0066\u006A',
10117
+ 'flat': '\u266D',
10118
+ 'fllig': '\uFB02',
10119
+ 'fltns': '\u25B1',
10120
+ 'fnof': '\u0192',
10121
+ 'fopf': '\uD835\uDD57',
10122
+ 'fork': '\u22D4',
10123
+ 'pitchfork': '\u22D4',
10124
+ 'forkv': '\u2AD9',
10125
+ 'fpartint': '\u2A0D',
10126
+ 'frac12': '\u00BD',
10127
+ 'half': '\u00BD',
10128
+ 'frac13': '\u2153',
10129
+ 'frac14': '\u00BC',
10130
+ 'frac15': '\u2155',
10131
+ 'frac16': '\u2159',
10132
+ 'frac18': '\u215B',
10133
+ 'frac23': '\u2154',
10134
+ 'frac25': '\u2156',
10135
+ 'frac34': '\u00BE',
10136
+ 'frac35': '\u2157',
10137
+ 'frac38': '\u215C',
10138
+ 'frac45': '\u2158',
10139
+ 'frac56': '\u215A',
10140
+ 'frac58': '\u215D',
10141
+ 'frac78': '\u215E',
10142
+ 'frasl': '\u2044',
10143
+ 'frown': '\u2322',
10144
+ 'sfrown': '\u2322',
10145
+ 'fscr': '\uD835\uDCBB',
10146
+ 'gEl': '\u2A8C',
10147
+ 'gtreqqless': '\u2A8C',
10148
+ 'gacute': '\u01F5',
10149
+ 'gamma': '\u03B3',
10150
+ 'gap': '\u2A86',
10151
+ 'gtrapprox': '\u2A86',
10152
+ 'gbreve': '\u011F',
10153
+ 'gcirc': '\u011D',
10154
+ 'gcy': '\u0433',
10155
+ 'gdot': '\u0121',
10156
+ 'gescc': '\u2AA9',
10157
+ 'gesdot': '\u2A80',
10158
+ 'gesdoto': '\u2A82',
10159
+ 'gesdotol': '\u2A84',
10160
+ 'gesl': '\u22DB\uFE00',
10161
+ 'gesles': '\u2A94',
10162
+ 'gfr': '\uD835\uDD24',
10163
+ 'gimel': '\u2137',
10164
+ 'gjcy': '\u0453',
10165
+ 'glE': '\u2A92',
10166
+ 'gla': '\u2AA5',
10167
+ 'glj': '\u2AA4',
10168
+ 'gnE': '\u2269',
10169
+ 'gneqq': '\u2269',
10170
+ 'gnap': '\u2A8A',
10171
+ 'gnapprox': '\u2A8A',
10172
+ 'gne': '\u2A88',
10173
+ 'gneq': '\u2A88',
10174
+ 'gnsim': '\u22E7',
10175
+ 'gopf': '\uD835\uDD58',
10176
+ 'gscr': '\u210A',
10177
+ 'gsime': '\u2A8E',
10178
+ 'gsiml': '\u2A90',
10179
+ 'gtcc': '\u2AA7',
10180
+ 'gtcir': '\u2A7A',
10181
+ 'gtdot': '\u22D7',
10182
+ 'gtrdot': '\u22D7',
10183
+ 'gtlPar': '\u2995',
10184
+ 'gtquest': '\u2A7C',
10185
+ 'gtrarr': '\u2978',
10186
+ 'gvertneqq': '\u2269\uFE00',
10187
+ 'gvnE': '\u2269\uFE00',
10188
+ 'hardcy': '\u044A',
10189
+ 'harrcir': '\u2948',
10190
+ 'harrw': '\u21AD',
10191
+ 'leftrightsquigarrow': '\u21AD',
10192
+ 'hbar': '\u210F',
10193
+ 'hslash': '\u210F',
10194
+ 'planck': '\u210F',
10195
+ 'plankv': '\u210F',
10196
+ 'hcirc': '\u0125',
10197
+ 'hearts': '\u2665',
10198
+ 'heartsuit': '\u2665',
10199
+ 'hellip': '\u2026',
10200
+ 'mldr': '\u2026',
10201
+ 'hercon': '\u22B9',
10202
+ 'hfr': '\uD835\uDD25',
10203
+ 'hksearow': '\u2925',
10204
+ 'searhk': '\u2925',
10205
+ 'hkswarow': '\u2926',
10206
+ 'swarhk': '\u2926',
10207
+ 'hoarr': '\u21FF',
10208
+ 'homtht': '\u223B',
10209
+ 'hookleftarrow': '\u21A9',
10210
+ 'larrhk': '\u21A9',
10211
+ 'hookrightarrow': '\u21AA',
10212
+ 'rarrhk': '\u21AA',
10213
+ 'hopf': '\uD835\uDD59',
10214
+ 'horbar': '\u2015',
10215
+ 'hscr': '\uD835\uDCBD',
10216
+ 'hstrok': '\u0127',
10217
+ 'hybull': '\u2043',
10218
+ 'iacute': '\u00ED',
10219
+ 'icirc': '\u00EE',
10220
+ 'icy': '\u0438',
10221
+ 'iecy': '\u0435',
10222
+ 'iexcl': '\u00A1',
10223
+ 'ifr': '\uD835\uDD26',
10224
+ 'igrave': '\u00EC',
10225
+ 'iiiint': '\u2A0C',
10226
+ 'qint': '\u2A0C',
10227
+ 'iiint': '\u222D',
10228
+ 'tint': '\u222D',
10229
+ 'iinfin': '\u29DC',
10230
+ 'iiota': '\u2129',
10231
+ 'ijlig': '\u0133',
10232
+ 'imacr': '\u012B',
10233
+ 'imath': '\u0131',
10234
+ 'inodot': '\u0131',
10235
+ 'imof': '\u22B7',
10236
+ 'imped': '\u01B5',
10237
+ 'incare': '\u2105',
10238
+ 'infin': '\u221E',
10239
+ 'infintie': '\u29DD',
10240
+ 'intcal': '\u22BA',
10241
+ 'intercal': '\u22BA',
10242
+ 'intlarhk': '\u2A17',
10243
+ 'intprod': '\u2A3C',
10244
+ 'iprod': '\u2A3C',
10245
+ 'iocy': '\u0451',
10246
+ 'iogon': '\u012F',
10247
+ 'iopf': '\uD835\uDD5A',
10248
+ 'iota': '\u03B9',
10249
+ 'iquest': '\u00BF',
10250
+ 'iscr': '\uD835\uDCBE',
10251
+ 'isinE': '\u22F9',
10252
+ 'isindot': '\u22F5',
10253
+ 'isins': '\u22F4',
10254
+ 'isinsv': '\u22F3',
10255
+ 'itilde': '\u0129',
10256
+ 'iukcy': '\u0456',
10257
+ 'iuml': '\u00EF',
10258
+ 'jcirc': '\u0135',
10259
+ 'jcy': '\u0439',
10260
+ 'jfr': '\uD835\uDD27',
10261
+ 'jmath': '\u0237',
10262
+ 'jopf': '\uD835\uDD5B',
10263
+ 'jscr': '\uD835\uDCBF',
10264
+ 'jsercy': '\u0458',
10265
+ 'jukcy': '\u0454',
10266
+ 'kappa': '\u03BA',
10267
+ 'kappav': '\u03F0',
10268
+ 'varkappa': '\u03F0',
10269
+ 'kcedil': '\u0137',
10270
+ 'kcy': '\u043A',
10271
+ 'kfr': '\uD835\uDD28',
10272
+ 'kgreen': '\u0138',
10273
+ 'khcy': '\u0445',
10274
+ 'kjcy': '\u045C',
10275
+ 'kopf': '\uD835\uDD5C',
10276
+ 'kscr': '\uD835\uDCC0',
10277
+ 'lAtail': '\u291B',
10278
+ 'lBarr': '\u290E',
10279
+ 'lEg': '\u2A8B',
10280
+ 'lesseqqgtr': '\u2A8B',
10281
+ 'lHar': '\u2962',
10282
+ 'lacute': '\u013A',
10283
+ 'laemptyv': '\u29B4',
10284
+ 'lambda': '\u03BB',
10285
+ 'langd': '\u2991',
10286
+ 'lap': '\u2A85',
10287
+ 'lessapprox': '\u2A85',
10288
+ 'laquo': '\u00AB',
10289
+ 'larrbfs': '\u291F',
10290
+ 'larrfs': '\u291D',
10291
+ 'larrlp': '\u21AB',
10292
+ 'looparrowleft': '\u21AB',
10293
+ 'larrpl': '\u2939',
10294
+ 'larrsim': '\u2973',
10295
+ 'larrtl': '\u21A2',
10296
+ 'leftarrowtail': '\u21A2',
10297
+ 'lat': '\u2AAB',
10298
+ 'latail': '\u2919',
10299
+ 'late': '\u2AAD',
10300
+ 'lates': '\u2AAD\uFE00',
10301
+ 'lbarr': '\u290C',
10302
+ 'lbbrk': '\u2772',
10303
+ 'lbrace': '\u007B',
10304
+ 'lcub': '\u007B',
10305
+ 'lbrack': '\u005B',
10306
+ 'lsqb': '\u005B',
10307
+ 'lbrke': '\u298B',
10308
+ 'lbrksld': '\u298F',
10309
+ 'lbrkslu': '\u298D',
10310
+ 'lcaron': '\u013E',
10311
+ 'lcedil': '\u013C',
10312
+ 'lcy': '\u043B',
10313
+ 'ldca': '\u2936',
10314
+ 'ldrdhar': '\u2967',
10315
+ 'ldrushar': '\u294B',
10316
+ 'ldsh': '\u21B2',
10317
+ 'le': '\u2264',
10318
+ 'leq': '\u2264',
10319
+ 'leftleftarrows': '\u21C7',
10320
+ 'llarr': '\u21C7',
10321
+ 'leftthreetimes': '\u22CB',
10322
+ 'lthree': '\u22CB',
10323
+ 'lescc': '\u2AA8',
10324
+ 'lesdot': '\u2A7F',
10325
+ 'lesdoto': '\u2A81',
10326
+ 'lesdotor': '\u2A83',
10327
+ 'lesg': '\u22DA\uFE00',
10328
+ 'lesges': '\u2A93',
10329
+ 'lessdot': '\u22D6',
10330
+ 'ltdot': '\u22D6',
10331
+ 'lfisht': '\u297C',
10332
+ 'lfr': '\uD835\uDD29',
10333
+ 'lgE': '\u2A91',
10334
+ 'lharul': '\u296A',
10335
+ 'lhblk': '\u2584',
10336
+ 'ljcy': '\u0459',
10337
+ 'llhard': '\u296B',
10338
+ 'lltri': '\u25FA',
10339
+ 'lmidot': '\u0140',
10340
+ 'lmoust': '\u23B0',
10341
+ 'lmoustache': '\u23B0',
10342
+ 'lnE': '\u2268',
10343
+ 'lneqq': '\u2268',
10344
+ 'lnap': '\u2A89',
10345
+ 'lnapprox': '\u2A89',
10346
+ 'lne': '\u2A87',
10347
+ 'lneq': '\u2A87',
10348
+ 'lnsim': '\u22E6',
10349
+ 'loang': '\u27EC',
10350
+ 'loarr': '\u21FD',
10351
+ 'longmapsto': '\u27FC',
10352
+ 'xmap': '\u27FC',
10353
+ 'looparrowright': '\u21AC',
10354
+ 'rarrlp': '\u21AC',
10355
+ 'lopar': '\u2985',
10356
+ 'lopf': '\uD835\uDD5D',
10357
+ 'loplus': '\u2A2D',
10358
+ 'lotimes': '\u2A34',
10359
+ 'lowast': '\u2217',
10360
+ 'loz': '\u25CA',
10361
+ 'lozenge': '\u25CA',
10362
+ 'lpar': '\u0028',
10363
+ 'lparlt': '\u2993',
10364
+ 'lrhard': '\u296D',
10365
+ 'lrm': '\u200E',
10366
+ 'lrtri': '\u22BF',
10367
+ 'lsaquo': '\u2039',
10368
+ 'lscr': '\uD835\uDCC1',
10369
+ 'lsime': '\u2A8D',
10370
+ 'lsimg': '\u2A8F',
10371
+ 'lsquor': '\u201A',
10372
+ 'sbquo': '\u201A',
10373
+ 'lstrok': '\u0142',
10374
+ 'ltcc': '\u2AA6',
10375
+ 'ltcir': '\u2A79',
10376
+ 'ltimes': '\u22C9',
10377
+ 'ltlarr': '\u2976',
10378
+ 'ltquest': '\u2A7B',
10379
+ 'ltrPar': '\u2996',
10380
+ 'ltri': '\u25C3',
10381
+ 'triangleleft': '\u25C3',
10382
+ 'lurdshar': '\u294A',
10383
+ 'luruhar': '\u2966',
10384
+ 'lvertneqq': '\u2268\uFE00',
10385
+ 'lvnE': '\u2268\uFE00',
10386
+ 'mDDot': '\u223A',
10387
+ 'macr': '\u00AF',
10388
+ 'strns': '\u00AF',
10389
+ 'male': '\u2642',
10390
+ 'malt': '\u2720',
10391
+ 'maltese': '\u2720',
10392
+ 'marker': '\u25AE',
10393
+ 'mcomma': '\u2A29',
10394
+ 'mcy': '\u043C',
10395
+ 'mdash': '\u2014',
10396
+ 'mfr': '\uD835\uDD2A',
10397
+ 'mho': '\u2127',
10398
+ 'micro': '\u00B5',
10399
+ 'midcir': '\u2AF0',
10400
+ 'minus': '\u2212',
10401
+ 'minusdu': '\u2A2A',
10402
+ 'mlcp': '\u2ADB',
10403
+ 'models': '\u22A7',
10404
+ 'mopf': '\uD835\uDD5E',
10405
+ 'mscr': '\uD835\uDCC2',
10406
+ 'mu': '\u03BC',
10407
+ 'multimap': '\u22B8',
10408
+ 'mumap': '\u22B8',
10409
+ 'nGg': '\u22D9\u0338',
10410
+ 'nGt': '\u226B\u20D2',
10411
+ 'nLeftarrow': '\u21CD',
10412
+ 'nlArr': '\u21CD',
10413
+ 'nLeftrightarrow': '\u21CE',
10414
+ 'nhArr': '\u21CE',
10415
+ 'nLl': '\u22D8\u0338',
10416
+ 'nLt': '\u226A\u20D2',
10417
+ 'nRightarrow': '\u21CF',
10418
+ 'nrArr': '\u21CF',
10419
+ 'nVDash': '\u22AF',
10420
+ 'nVdash': '\u22AE',
10421
+ 'nacute': '\u0144',
10422
+ 'nang': '\u2220\u20D2',
10423
+ 'napE': '\u2A70\u0338',
10424
+ 'napid': '\u224B\u0338',
10425
+ 'napos': '\u0149',
10426
+ 'natur': '\u266E',
10427
+ 'natural': '\u266E',
10428
+ 'ncap': '\u2A43',
10429
+ 'ncaron': '\u0148',
10430
+ 'ncedil': '\u0146',
10431
+ 'ncongdot': '\u2A6D\u0338',
10432
+ 'ncup': '\u2A42',
10433
+ 'ncy': '\u043D',
10434
+ 'ndash': '\u2013',
10435
+ 'neArr': '\u21D7',
10436
+ 'nearhk': '\u2924',
10437
+ 'nedot': '\u2250\u0338',
10438
+ 'nesear': '\u2928',
10439
+ 'toea': '\u2928',
10440
+ 'nfr': '\uD835\uDD2B',
10441
+ 'nharr': '\u21AE',
10442
+ 'nleftrightarrow': '\u21AE',
10443
+ 'nhpar': '\u2AF2',
10444
+ 'nis': '\u22FC',
10445
+ 'nisd': '\u22FA',
10446
+ 'njcy': '\u045A',
10447
+ 'nlE': '\u2266\u0338',
10448
+ 'nleqq': '\u2266\u0338',
10449
+ 'nlarr': '\u219A',
10450
+ 'nleftarrow': '\u219A',
10451
+ 'nldr': '\u2025',
10452
+ 'nopf': '\uD835\uDD5F',
10453
+ 'not': '\u00AC',
10454
+ 'notinE': '\u22F9\u0338',
10455
+ 'notindot': '\u22F5\u0338',
10456
+ 'notinvb': '\u22F7',
10457
+ 'notinvc': '\u22F6',
10458
+ 'notnivb': '\u22FE',
10459
+ 'notnivc': '\u22FD',
10460
+ 'nparsl': '\u2AFD\u20E5',
10461
+ 'npart': '\u2202\u0338',
10462
+ 'npolint': '\u2A14',
10463
+ 'nrarr': '\u219B',
10464
+ 'nrightarrow': '\u219B',
10465
+ 'nrarrc': '\u2933\u0338',
10466
+ 'nrarrw': '\u219D\u0338',
10467
+ 'nscr': '\uD835\uDCC3',
10468
+ 'nsub': '\u2284',
10469
+ 'nsubE': '\u2AC5\u0338',
10470
+ 'nsubseteqq': '\u2AC5\u0338',
10471
+ 'nsup': '\u2285',
10472
+ 'nsupE': '\u2AC6\u0338',
10473
+ 'nsupseteqq': '\u2AC6\u0338',
10474
+ 'ntilde': '\u00F1',
10475
+ 'nu': '\u03BD',
10476
+ 'num': '\u0023',
10477
+ 'numero': '\u2116',
10478
+ 'numsp': '\u2007',
10479
+ 'nvDash': '\u22AD',
10480
+ 'nvHarr': '\u2904',
10481
+ 'nvap': '\u224D\u20D2',
10482
+ 'nvdash': '\u22AC',
10483
+ 'nvge': '\u2265\u20D2',
10484
+ 'nvgt': '\u003E\u20D2',
10485
+ 'nvinfin': '\u29DE',
10486
+ 'nvlArr': '\u2902',
10487
+ 'nvle': '\u2264\u20D2',
10488
+ 'nvlt': '\u003C\u20D2',
10489
+ 'nvltrie': '\u22B4\u20D2',
10490
+ 'nvrArr': '\u2903',
10491
+ 'nvrtrie': '\u22B5\u20D2',
10492
+ 'nvsim': '\u223C\u20D2',
10493
+ 'nwArr': '\u21D6',
10494
+ 'nwarhk': '\u2923',
10495
+ 'nwnear': '\u2927',
10496
+ 'oacute': '\u00F3',
10497
+ 'ocirc': '\u00F4',
10498
+ 'ocy': '\u043E',
10499
+ 'odblac': '\u0151',
10500
+ 'odiv': '\u2A38',
10501
+ 'odsold': '\u29BC',
10502
+ 'oelig': '\u0153',
10503
+ 'ofcir': '\u29BF',
10504
+ 'ofr': '\uD835\uDD2C',
10505
+ 'ogon': '\u02DB',
10506
+ 'ograve': '\u00F2',
10507
+ 'ogt': '\u29C1',
10508
+ 'ohbar': '\u29B5',
10509
+ 'olcir': '\u29BE',
10510
+ 'olcross': '\u29BB',
10511
+ 'olt': '\u29C0',
10512
+ 'omacr': '\u014D',
10513
+ 'omega': '\u03C9',
10514
+ 'omicron': '\u03BF',
10515
+ 'omid': '\u29B6',
10516
+ 'oopf': '\uD835\uDD60',
10517
+ 'opar': '\u29B7',
10518
+ 'operp': '\u29B9',
10519
+ 'or': '\u2228',
10520
+ 'vee': '\u2228',
10521
+ 'ord': '\u2A5D',
10522
+ 'order': '\u2134',
10523
+ 'orderof': '\u2134',
10524
+ 'oscr': '\u2134',
10525
+ 'ordf': '\u00AA',
10526
+ 'ordm': '\u00BA',
10527
+ 'origof': '\u22B6',
10528
+ 'oror': '\u2A56',
10529
+ 'orslope': '\u2A57',
10530
+ 'orv': '\u2A5B',
10531
+ 'oslash': '\u00F8',
10532
+ 'osol': '\u2298',
10533
+ 'otilde': '\u00F5',
10534
+ 'otimesas': '\u2A36',
10535
+ 'ouml': '\u00F6',
10536
+ 'ovbar': '\u233D',
10537
+ 'para': '\u00B6',
10538
+ 'parsim': '\u2AF3',
10539
+ 'parsl': '\u2AFD',
10540
+ 'pcy': '\u043F',
10541
+ 'percnt': '\u0025',
10542
+ 'period': '\u002E',
10543
+ 'permil': '\u2030',
10544
+ 'pertenk': '\u2031',
10545
+ 'pfr': '\uD835\uDD2D',
10546
+ 'phi': '\u03C6',
10547
+ 'phiv': '\u03D5',
10548
+ 'straightphi': '\u03D5',
10549
+ 'varphi': '\u03D5',
10550
+ 'phone': '\u260E',
10551
+ 'pi': '\u03C0',
10552
+ 'piv': '\u03D6',
10553
+ 'varpi': '\u03D6',
10554
+ 'planckh': '\u210E',
10555
+ 'plus': '\u002B',
10556
+ 'plusacir': '\u2A23',
10557
+ 'pluscir': '\u2A22',
10558
+ 'plusdu': '\u2A25',
10559
+ 'pluse': '\u2A72',
10560
+ 'plussim': '\u2A26',
10561
+ 'plustwo': '\u2A27',
10562
+ 'pointint': '\u2A15',
10563
+ 'popf': '\uD835\uDD61',
10564
+ 'pound': '\u00A3',
10565
+ 'prE': '\u2AB3',
10566
+ 'prap': '\u2AB7',
10567
+ 'precapprox': '\u2AB7',
10568
+ 'precnapprox': '\u2AB9',
10569
+ 'prnap': '\u2AB9',
10570
+ 'precneqq': '\u2AB5',
10571
+ 'prnE': '\u2AB5',
10572
+ 'precnsim': '\u22E8',
10573
+ 'prnsim': '\u22E8',
10574
+ 'prime': '\u2032',
10575
+ 'profalar': '\u232E',
10576
+ 'profline': '\u2312',
10577
+ 'profsurf': '\u2313',
10578
+ 'prurel': '\u22B0',
10579
+ 'pscr': '\uD835\uDCC5',
10580
+ 'psi': '\u03C8',
10581
+ 'puncsp': '\u2008',
10582
+ 'qfr': '\uD835\uDD2E',
10583
+ 'qopf': '\uD835\uDD62',
10584
+ 'qprime': '\u2057',
10585
+ 'qscr': '\uD835\uDCC6',
10586
+ 'quatint': '\u2A16',
10587
+ 'quest': '\u003F',
10588
+ 'rAtail': '\u291C',
10589
+ 'rHar': '\u2964',
10590
+ 'race': '\u223D\u0331',
10591
+ 'racute': '\u0155',
10592
+ 'raemptyv': '\u29B3',
10593
+ 'rangd': '\u2992',
10594
+ 'range': '\u29A5',
10595
+ 'raquo': '\u00BB',
10596
+ 'rarrap': '\u2975',
10597
+ 'rarrbfs': '\u2920',
10598
+ 'rarrc': '\u2933',
10599
+ 'rarrfs': '\u291E',
10600
+ 'rarrpl': '\u2945',
10601
+ 'rarrsim': '\u2974',
10602
+ 'rarrtl': '\u21A3',
10603
+ 'rightarrowtail': '\u21A3',
10604
+ 'rarrw': '\u219D',
10605
+ 'rightsquigarrow': '\u219D',
10606
+ 'ratail': '\u291A',
10607
+ 'ratio': '\u2236',
10608
+ 'rbbrk': '\u2773',
10609
+ 'rbrace': '\u007D',
10610
+ 'rcub': '\u007D',
10611
+ 'rbrack': '\u005D',
10612
+ 'rsqb': '\u005D',
10613
+ 'rbrke': '\u298C',
10614
+ 'rbrksld': '\u298E',
10615
+ 'rbrkslu': '\u2990',
10616
+ 'rcaron': '\u0159',
10617
+ 'rcedil': '\u0157',
10618
+ 'rcy': '\u0440',
10619
+ 'rdca': '\u2937',
10620
+ 'rdldhar': '\u2969',
10621
+ 'rdsh': '\u21B3',
10622
+ 'rect': '\u25AD',
10623
+ 'rfisht': '\u297D',
10624
+ 'rfr': '\uD835\uDD2F',
10625
+ 'rharul': '\u296C',
10626
+ 'rho': '\u03C1',
10627
+ 'rhov': '\u03F1',
10628
+ 'varrho': '\u03F1',
10629
+ 'rightrightarrows': '\u21C9',
10630
+ 'rrarr': '\u21C9',
10631
+ 'rightthreetimes': '\u22CC',
10632
+ 'rthree': '\u22CC',
10633
+ 'ring': '\u02DA',
10634
+ 'rlm': '\u200F',
10635
+ 'rmoust': '\u23B1',
10636
+ 'rmoustache': '\u23B1',
10637
+ 'rnmid': '\u2AEE',
10638
+ 'roang': '\u27ED',
10639
+ 'roarr': '\u21FE',
10640
+ 'ropar': '\u2986',
10641
+ 'ropf': '\uD835\uDD63',
10642
+ 'roplus': '\u2A2E',
10643
+ 'rotimes': '\u2A35',
10644
+ 'rpar': '\u0029',
10645
+ 'rpargt': '\u2994',
10646
+ 'rppolint': '\u2A12',
10647
+ 'rsaquo': '\u203A',
10648
+ 'rscr': '\uD835\uDCC7',
10649
+ 'rtimes': '\u22CA',
10650
+ 'rtri': '\u25B9',
10651
+ 'triangleright': '\u25B9',
10652
+ 'rtriltri': '\u29CE',
10653
+ 'ruluhar': '\u2968',
10654
+ 'rx': '\u211E',
10655
+ 'sacute': '\u015B',
10656
+ 'scE': '\u2AB4',
10657
+ 'scap': '\u2AB8',
10658
+ 'succapprox': '\u2AB8',
10659
+ 'scaron': '\u0161',
10660
+ 'scedil': '\u015F',
10661
+ 'scirc': '\u015D',
10662
+ 'scnE': '\u2AB6',
10663
+ 'succneqq': '\u2AB6',
10664
+ 'scnap': '\u2ABA',
10665
+ 'succnapprox': '\u2ABA',
10666
+ 'scnsim': '\u22E9',
10667
+ 'succnsim': '\u22E9',
10668
+ 'scpolint': '\u2A13',
10669
+ 'scy': '\u0441',
10670
+ 'sdot': '\u22C5',
10671
+ 'sdote': '\u2A66',
10672
+ 'seArr': '\u21D8',
10673
+ 'sect': '\u00A7',
10674
+ 'semi': '\u003B',
10675
+ 'seswar': '\u2929',
10676
+ 'tosa': '\u2929',
10677
+ 'sext': '\u2736',
10678
+ 'sfr': '\uD835\uDD30',
10679
+ 'sharp': '\u266F',
10680
+ 'shchcy': '\u0449',
10681
+ 'shcy': '\u0448',
10682
+ 'shy': '\u00AD',
10683
+ 'sigma': '\u03C3',
10684
+ 'sigmaf': '\u03C2',
10685
+ 'sigmav': '\u03C2',
10686
+ 'varsigma': '\u03C2',
10687
+ 'simdot': '\u2A6A',
10688
+ 'simg': '\u2A9E',
10689
+ 'simgE': '\u2AA0',
10690
+ 'siml': '\u2A9D',
10691
+ 'simlE': '\u2A9F',
10692
+ 'simne': '\u2246',
10693
+ 'simplus': '\u2A24',
10694
+ 'simrarr': '\u2972',
10695
+ 'smashp': '\u2A33',
10696
+ 'smeparsl': '\u29E4',
10697
+ 'smile': '\u2323',
10698
+ 'ssmile': '\u2323',
10699
+ 'smt': '\u2AAA',
10700
+ 'smte': '\u2AAC',
10701
+ 'smtes': '\u2AAC\uFE00',
10702
+ 'softcy': '\u044C',
10703
+ 'sol': '\u002F',
10704
+ 'solb': '\u29C4',
10705
+ 'solbar': '\u233F',
10706
+ 'sopf': '\uD835\uDD64',
10707
+ 'spades': '\u2660',
10708
+ 'spadesuit': '\u2660',
10709
+ 'sqcaps': '\u2293\uFE00',
10710
+ 'sqcups': '\u2294\uFE00',
10711
+ 'sscr': '\uD835\uDCC8',
10712
+ 'star': '\u2606',
10713
+ 'sub': '\u2282',
10714
+ 'subset': '\u2282',
10715
+ 'subE': '\u2AC5',
10716
+ 'subseteqq': '\u2AC5',
10717
+ 'subdot': '\u2ABD',
10718
+ 'subedot': '\u2AC3',
10719
+ 'submult': '\u2AC1',
10720
+ 'subnE': '\u2ACB',
10721
+ 'subsetneqq': '\u2ACB',
10722
+ 'subne': '\u228A',
10723
+ 'subsetneq': '\u228A',
10724
+ 'subplus': '\u2ABF',
10725
+ 'subrarr': '\u2979',
10726
+ 'subsim': '\u2AC7',
10727
+ 'subsub': '\u2AD5',
10728
+ 'subsup': '\u2AD3',
10729
+ 'sung': '\u266A',
10730
+ 'sup1': '\u00B9',
10731
+ 'sup2': '\u00B2',
10732
+ 'sup3': '\u00B3',
10733
+ 'supE': '\u2AC6',
10734
+ 'supseteqq': '\u2AC6',
10735
+ 'supdot': '\u2ABE',
10736
+ 'supdsub': '\u2AD8',
10737
+ 'supedot': '\u2AC4',
10738
+ 'suphsol': '\u27C9',
10739
+ 'suphsub': '\u2AD7',
10740
+ 'suplarr': '\u297B',
10741
+ 'supmult': '\u2AC2',
10742
+ 'supnE': '\u2ACC',
10743
+ 'supsetneqq': '\u2ACC',
10744
+ 'supne': '\u228B',
10745
+ 'supsetneq': '\u228B',
10746
+ 'supplus': '\u2AC0',
10747
+ 'supsim': '\u2AC8',
10748
+ 'supsub': '\u2AD4',
10749
+ 'supsup': '\u2AD6',
10750
+ 'swArr': '\u21D9',
10751
+ 'swnwar': '\u292A',
10752
+ 'szlig': '\u00DF',
10753
+ 'target': '\u2316',
10754
+ 'tau': '\u03C4',
10755
+ 'tcaron': '\u0165',
10756
+ 'tcedil': '\u0163',
10757
+ 'tcy': '\u0442',
10758
+ 'telrec': '\u2315',
10759
+ 'tfr': '\uD835\uDD31',
10760
+ 'theta': '\u03B8',
10761
+ 'thetasym': '\u03D1',
10762
+ 'thetav': '\u03D1',
10763
+ 'vartheta': '\u03D1',
10764
+ 'thorn': '\u00FE',
10765
+ 'times': '\u00D7',
10766
+ 'timesbar': '\u2A31',
10767
+ 'timesd': '\u2A30',
10768
+ 'topbot': '\u2336',
10769
+ 'topcir': '\u2AF1',
10770
+ 'topf': '\uD835\uDD65',
10771
+ 'topfork': '\u2ADA',
10772
+ 'tprime': '\u2034',
10773
+ 'triangle': '\u25B5',
10774
+ 'utri': '\u25B5',
10775
+ 'triangleq': '\u225C',
10776
+ 'trie': '\u225C',
10777
+ 'tridot': '\u25EC',
10778
+ 'triminus': '\u2A3A',
10779
+ 'triplus': '\u2A39',
10780
+ 'trisb': '\u29CD',
10781
+ 'tritime': '\u2A3B',
10782
+ 'trpezium': '\u23E2',
10783
+ 'tscr': '\uD835\uDCC9',
10784
+ 'tscy': '\u0446',
10785
+ 'tshcy': '\u045B',
10786
+ 'tstrok': '\u0167',
10787
+ 'uHar': '\u2963',
10788
+ 'uacute': '\u00FA',
10789
+ 'ubrcy': '\u045E',
10790
+ 'ubreve': '\u016D',
10791
+ 'ucirc': '\u00FB',
10792
+ 'ucy': '\u0443',
10793
+ 'udblac': '\u0171',
10794
+ 'ufisht': '\u297E',
10795
+ 'ufr': '\uD835\uDD32',
10796
+ 'ugrave': '\u00F9',
10797
+ 'uhblk': '\u2580',
10798
+ 'ulcorn': '\u231C',
10799
+ 'ulcorner': '\u231C',
10800
+ 'ulcrop': '\u230F',
10801
+ 'ultri': '\u25F8',
10802
+ 'umacr': '\u016B',
10803
+ 'uogon': '\u0173',
10804
+ 'uopf': '\uD835\uDD66',
10805
+ 'upsi': '\u03C5',
10806
+ 'upsilon': '\u03C5',
10807
+ 'upuparrows': '\u21C8',
10808
+ 'uuarr': '\u21C8',
10809
+ 'urcorn': '\u231D',
10810
+ 'urcorner': '\u231D',
10811
+ 'urcrop': '\u230E',
10812
+ 'uring': '\u016F',
10813
+ 'urtri': '\u25F9',
10814
+ 'uscr': '\uD835\uDCCA',
10815
+ 'utdot': '\u22F0',
10816
+ 'utilde': '\u0169',
10817
+ 'uuml': '\u00FC',
10818
+ 'uwangle': '\u29A7',
10819
+ 'vBar': '\u2AE8',
10820
+ 'vBarv': '\u2AE9',
10821
+ 'vangrt': '\u299C',
10822
+ 'varsubsetneq': '\u228A\uFE00',
10823
+ 'vsubne': '\u228A\uFE00',
10824
+ 'varsubsetneqq': '\u2ACB\uFE00',
10825
+ 'vsubnE': '\u2ACB\uFE00',
10826
+ 'varsupsetneq': '\u228B\uFE00',
10827
+ 'vsupne': '\u228B\uFE00',
10828
+ 'varsupsetneqq': '\u2ACC\uFE00',
10829
+ 'vsupnE': '\u2ACC\uFE00',
10830
+ 'vcy': '\u0432',
10831
+ 'veebar': '\u22BB',
10832
+ 'veeeq': '\u225A',
10833
+ 'vellip': '\u22EE',
10834
+ 'vfr': '\uD835\uDD33',
10835
+ 'vopf': '\uD835\uDD67',
10836
+ 'vscr': '\uD835\uDCCB',
10837
+ 'vzigzag': '\u299A',
10838
+ 'wcirc': '\u0175',
10839
+ 'wedbar': '\u2A5F',
10840
+ 'wedgeq': '\u2259',
10841
+ 'weierp': '\u2118',
10842
+ 'wp': '\u2118',
10843
+ 'wfr': '\uD835\uDD34',
10844
+ 'wopf': '\uD835\uDD68',
10845
+ 'wscr': '\uD835\uDCCC',
10846
+ 'xfr': '\uD835\uDD35',
10847
+ 'xi': '\u03BE',
10848
+ 'xnis': '\u22FB',
10849
+ 'xopf': '\uD835\uDD69',
10850
+ 'xscr': '\uD835\uDCCD',
10851
+ 'yacute': '\u00FD',
10852
+ 'yacy': '\u044F',
10853
+ 'ycirc': '\u0177',
10854
+ 'ycy': '\u044B',
10855
+ 'yen': '\u00A5',
10856
+ 'yfr': '\uD835\uDD36',
10857
+ 'yicy': '\u0457',
10858
+ 'yopf': '\uD835\uDD6A',
10859
+ 'yscr': '\uD835\uDCCE',
10860
+ 'yucy': '\u044E',
10861
+ 'yuml': '\u00FF',
10862
+ 'zacute': '\u017A',
10863
+ 'zcaron': '\u017E',
10864
+ 'zcy': '\u0437',
10865
+ 'zdot': '\u017C',
10866
+ 'zeta': '\u03B6',
10867
+ 'zfr': '\uD835\uDD37',
10868
+ 'zhcy': '\u0436',
10869
+ 'zigrarr': '\u21DD',
10870
+ 'zopf': '\uD835\uDD6B',
10871
+ 'zscr': '\uD835\uDCCF',
10872
+ 'zwj': '\u200D',
10873
+ 'zwnj': '\u200C'
10874
+ };
10875
+ // The &ngsp; pseudo-entity is denoting a space. see:
10876
+ // https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart
10877
+ const NGSP_UNICODE = '\uE500';
10878
+ NAMED_ENTITIES['ngsp'] = NGSP_UNICODE;
10879
+
9004
10880
  /**
9005
10881
  * @license
9006
10882
  * Copyright Google LLC All Rights Reserved.
@@ -15410,8 +17286,8 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
15410
17286
  this._bindingScope.notifyImplicitReceiverUse();
15411
17287
  }
15412
17288
  // LocalResolver
15413
- maybeRestoreView(retrievalLevel, localRefLookup) {
15414
- this._bindingScope.maybeRestoreView(retrievalLevel, localRefLookup);
17289
+ maybeRestoreView() {
17290
+ this._bindingScope.maybeRestoreView();
15415
17291
  }
15416
17292
  i18nTranslate(message, params = {}, ref, transformFn) {
15417
17293
  const _ref = ref || this.i18nGenerateMainBlockVar();
@@ -16505,14 +18381,13 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
16505
18381
  lhs: value.lhs,
16506
18382
  declareLocalCallback: value.declareLocalCallback,
16507
18383
  declare: false,
16508
- priority: value.priority,
16509
- localRef: value.localRef
18384
+ priority: value.priority
16510
18385
  };
16511
18386
  // Cache the value locally.
16512
18387
  this.map.set(name, value);
16513
18388
  // Possibly generate a shared context var
16514
18389
  this.maybeGenerateSharedContextVar(value);
16515
- this.maybeRestoreView(value.retrievalLevel, value.localRef);
18390
+ this.maybeRestoreView();
16516
18391
  }
16517
18392
  if (value.declareLocalCallback && !value.declare) {
16518
18393
  value.declare = true;
@@ -16552,7 +18427,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
16552
18427
  declare: false,
16553
18428
  declareLocalCallback: declareLocalCallback,
16554
18429
  priority: priority,
16555
- localRef: localRef || false
16556
18430
  });
16557
18431
  return this;
16558
18432
  }
@@ -16616,22 +18490,20 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
16616
18490
  },
16617
18491
  declare: false,
16618
18492
  priority: 2 /* SHARED_CONTEXT */,
16619
- localRef: false
16620
18493
  });
16621
18494
  }
16622
18495
  getComponentProperty(name) {
16623
18496
  const componentValue = this.map.get(SHARED_CONTEXT_KEY + 0);
16624
18497
  componentValue.declare = true;
16625
- this.maybeRestoreView(0, false);
18498
+ this.maybeRestoreView();
16626
18499
  return componentValue.lhs.prop(name);
16627
18500
  }
16628
- maybeRestoreView(retrievalLevel, localRefLookup) {
16629
- // We want to restore the current view in listener fns if:
16630
- // 1 - we are accessing a value in a parent view, which requires walking the view tree rather
16631
- // than using the ctx arg. In this case, the retrieval and binding level will be different.
16632
- // 2 - we are looking up a local ref, which requires restoring the view where the local
16633
- // ref is stored
16634
- if (this.isListenerScope() && (retrievalLevel < this.bindingLevel || localRefLookup)) {
18501
+ maybeRestoreView() {
18502
+ // View restoration is required for listener instructions inside embedded views, because
18503
+ // they only run in creation mode and they can have references to the context object.
18504
+ // If the context object changes in update mode, the reference will be incorrect, because
18505
+ // it was established during creation.
18506
+ if (this.isListenerScope()) {
16635
18507
  if (!this.parent.restoreViewVariable) {
16636
18508
  // parent saves variable to generate a shared `const $s$ = getCurrentView();` instruction
16637
18509
  this.parent.restoreViewVariable = variable(this.parent.freshReferenceName());
@@ -17598,13 +19470,13 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
17598
19470
  * found in the LICENSE file at https://angular.io/license
17599
19471
  */
17600
19472
  /**
17601
- * An interface for retrieving documents by URL that the compiler uses
17602
- * to load templates.
19473
+ * An interface for retrieving documents by URL that the compiler uses to
19474
+ * load templates.
19475
+ *
19476
+ * This is an abstract class, rather than an interface, so that it can be used
19477
+ * as injection token.
17603
19478
  */
17604
19479
  class ResourceLoader {
17605
- get(url) {
17606
- return '';
17607
- }
17608
19480
  }
17609
19481
 
17610
19482
  /**
@@ -18053,7 +19925,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18053
19925
  * Use of this source code is governed by an MIT-style license that can be
18054
19926
  * found in the LICENSE file at https://angular.io/license
18055
19927
  */
18056
- const VERSION$1 = new Version('12.1.1');
19928
+ const VERSION$1 = new Version('12.1.5');
18057
19929
 
18058
19930
  /**
18059
19931
  * @license
@@ -18184,7 +20056,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18184
20056
  const { directives, bindings, references } = DirectiveBinder.apply(target.template, this.directiveMatcher);
18185
20057
  // Finally, run the TemplateBinder to bind references, variables, and other entities within the
18186
20058
  // template. This extracts all the metadata that doesn't depend on directive matching.
18187
- const { expressions, symbols, nestingLevel, usedPipes } = TemplateBinder.apply(target.template, scope);
20059
+ const { expressions, symbols, nestingLevel, usedPipes } = TemplateBinder.applyWithScope(target.template, scope);
18188
20060
  return new R3BoundTarget(target, directives, bindings, references, expressions, symbols, nestingLevel, templateEntities, usedPipes);
18189
20061
  }
18190
20062
  }
@@ -18461,7 +20333,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18461
20333
  * nesting level (how many levels deep within the template structure the `Template` is), starting
18462
20334
  * at 1.
18463
20335
  */
18464
- static apply(template, scope) {
20336
+ static applyWithScope(template, scope) {
18465
20337
  const expressions = new Map();
18466
20338
  const symbols = new Map();
18467
20339
  const nestingLevel = new Map();
@@ -18692,7 +20564,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18692
20564
  function compileDeclareClassMetadata(metadata) {
18693
20565
  const definitionMap = new DefinitionMap();
18694
20566
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
18695
- definitionMap.set('version', literal('12.1.1'));
20567
+ definitionMap.set('version', literal('12.1.5'));
18696
20568
  definitionMap.set('ngImport', importExpr(Identifiers.core));
18697
20569
  definitionMap.set('type', metadata.type);
18698
20570
  definitionMap.set('decorators', metadata.decorators);
@@ -18732,7 +20604,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18732
20604
  function createDirectiveDefinitionMap(meta) {
18733
20605
  const definitionMap = new DefinitionMap();
18734
20606
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
18735
- definitionMap.set('version', literal('12.1.1'));
20607
+ definitionMap.set('version', literal('12.1.5'));
18736
20608
  // e.g. `type: MyDirective`
18737
20609
  definitionMap.set('type', meta.internalType);
18738
20610
  // e.g. `selector: 'some-dir'`
@@ -18949,7 +20821,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18949
20821
  function compileDeclareFactoryFunction(meta) {
18950
20822
  const definitionMap = new DefinitionMap();
18951
20823
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
18952
- definitionMap.set('version', literal('12.1.1'));
20824
+ definitionMap.set('version', literal('12.1.5'));
18953
20825
  definitionMap.set('ngImport', importExpr(Identifiers.core));
18954
20826
  definitionMap.set('type', meta.internalType);
18955
20827
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -18991,7 +20863,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
18991
20863
  function createInjectableDefinitionMap(meta) {
18992
20864
  const definitionMap = new DefinitionMap();
18993
20865
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
18994
- definitionMap.set('version', literal('12.1.1'));
20866
+ definitionMap.set('version', literal('12.1.5'));
18995
20867
  definitionMap.set('ngImport', importExpr(Identifiers.core));
18996
20868
  definitionMap.set('type', meta.internalType);
18997
20869
  // Only generate providedIn property if it has a non-null value
@@ -19070,7 +20942,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
19070
20942
  function createInjectorDefinitionMap(meta) {
19071
20943
  const definitionMap = new DefinitionMap();
19072
20944
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
19073
- definitionMap.set('version', literal('12.1.1'));
20945
+ definitionMap.set('version', literal('12.1.5'));
19074
20946
  definitionMap.set('ngImport', importExpr(Identifiers.core));
19075
20947
  definitionMap.set('type', meta.internalType);
19076
20948
  definitionMap.set('providers', meta.providers);
@@ -19107,7 +20979,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
19107
20979
  function createNgModuleDefinitionMap(meta) {
19108
20980
  const definitionMap = new DefinitionMap();
19109
20981
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
19110
- definitionMap.set('version', literal('12.1.1'));
20982
+ definitionMap.set('version', literal('12.1.5'));
19111
20983
  definitionMap.set('ngImport', importExpr(Identifiers.core));
19112
20984
  definitionMap.set('type', meta.internalType);
19113
20985
  // We only generate the keys in the metadata if the arrays contain values.
@@ -19165,7 +21037,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
19165
21037
  function createPipeDefinitionMap(meta) {
19166
21038
  const definitionMap = new DefinitionMap();
19167
21039
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$6));
19168
- definitionMap.set('version', literal('12.1.1'));
21040
+ definitionMap.set('version', literal('12.1.5'));
19169
21041
  definitionMap.set('ngImport', importExpr(Identifiers.core));
19170
21042
  // e.g. `type: MyPipe`
19171
21043
  definitionMap.set('type', meta.internalType);
@@ -19197,7 +21069,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
19197
21069
  * Use of this source code is governed by an MIT-style license that can be
19198
21070
  * found in the LICENSE file at https://angular.io/license
19199
21071
  */
19200
- const VERSION$2 = new Version('12.1.1');
21072
+ const VERSION$2 = new Version('12.1.5');
19201
21073
 
19202
21074
  /**
19203
21075
  * @license
@@ -21617,6 +23489,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
21617
23489
  }
21618
23490
  return { node, from: importDecl.moduleSpecifier.text };
21619
23491
  }
23492
+ else if (ts$1.isModuleDeclaration(decl)) {
23493
+ return { node, from: null };
23494
+ }
21620
23495
  else {
21621
23496
  throw new Error(`Unknown import type?`);
21622
23497
  }
@@ -21874,7 +23749,7 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
21874
23749
  * Use of this source code is governed by an MIT-style license that can be
21875
23750
  * found in the LICENSE file at https://angular.io/license
21876
23751
  */
21877
- function extractReferencesFromType(checker, def, ngModuleImportedFrom, resolutionContext) {
23752
+ function extractReferencesFromType(checker, def, bestGuessOwningModule) {
21878
23753
  if (!ts$1.isTupleTypeNode(def)) {
21879
23754
  return [];
21880
23755
  }
@@ -21887,12 +23762,15 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
21887
23762
  if (!isNamedClassDeclaration(node)) {
21888
23763
  throw new Error(`Expected named ClassDeclaration: ${nodeDebugInfo(node)}`);
21889
23764
  }
21890
- const specifier = (from !== null && !from.startsWith('.') ? from : ngModuleImportedFrom);
21891
- if (specifier !== null) {
21892
- return new Reference$1(node, { specifier, resolutionContext });
23765
+ if (from !== null && !from.startsWith('.')) {
23766
+ // The symbol was imported using an absolute module specifier so return a reference that
23767
+ // uses that absolute module specifier as its best guess owning module.
23768
+ return new Reference$1(node, { specifier: from, resolutionContext: def.getSourceFile().fileName });
21893
23769
  }
21894
23770
  else {
21895
- return new Reference$1(node);
23771
+ // For local symbols or symbols that were imported using a relative module import it is
23772
+ // assumed that the symbol is exported from the provided best guess owning module.
23773
+ return new Reference$1(node, bestGuessOwningModule);
21896
23774
  }
21897
23775
  });
21898
23776
  }
@@ -22087,7 +23965,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
22087
23965
  */
22088
23966
  getNgModuleMetadata(ref) {
22089
23967
  const clazz = ref.node;
22090
- const resolutionContext = clazz.getSourceFile().fileName;
22091
23968
  // This operation is explicitly not memoized, as it depends on `ref.ownedByModuleGuess`.
22092
23969
  // TODO(alxhub): investigate caching of .d.ts module metadata.
22093
23970
  const ngModuleDef = this.reflector.getMembersOfClass(clazz).find(member => member.name === 'ɵmod' && member.isStatic);
@@ -22105,9 +23982,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
22105
23982
  const [_, declarationMetadata, importMetadata, exportMetadata] = ngModuleDef.type.typeArguments;
22106
23983
  return {
22107
23984
  ref,
22108
- declarations: extractReferencesFromType(this.checker, declarationMetadata, ref.ownedByModuleGuess, resolutionContext),
22109
- exports: extractReferencesFromType(this.checker, exportMetadata, ref.ownedByModuleGuess, resolutionContext),
22110
- imports: extractReferencesFromType(this.checker, importMetadata, ref.ownedByModuleGuess, resolutionContext),
23985
+ declarations: extractReferencesFromType(this.checker, declarationMetadata, ref.bestGuessOwningModule),
23986
+ exports: extractReferencesFromType(this.checker, exportMetadata, ref.bestGuessOwningModule),
23987
+ imports: extractReferencesFromType(this.checker, importMetadata, ref.bestGuessOwningModule),
22111
23988
  schemas: [],
22112
23989
  rawDeclarations: null,
22113
23990
  };
@@ -23344,10 +25221,11 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
23344
25221
  if (expr === null) {
23345
25222
  return DynamicValue.fromDynamicInput(node, DynamicValue.fromExternalReference(node.expression, lhs));
23346
25223
  }
23347
- // If the function is declared in a different file, resolve the foreign function expression
23348
- // using the absolute module name of that file (if any).
23349
- if (lhs.bestGuessOwningModule !== null) {
23350
- context = Object.assign(Object.assign({}, context), { absoluteModuleName: lhs.bestGuessOwningModule.specifier, resolutionContext: node.getSourceFile().fileName });
25224
+ // If the foreign expression occurs in a different file, then assume that the owning module
25225
+ // of the call expression should also be used for the resolved foreign expression.
25226
+ if (expr.getSourceFile() !== node.expression.getSourceFile() &&
25227
+ lhs.bestGuessOwningModule !== null) {
25228
+ context = Object.assign(Object.assign({}, context), { absoluteModuleName: lhs.bestGuessOwningModule.specifier, resolutionContext: lhs.bestGuessOwningModule.resolutionContext });
23351
25229
  }
23352
25230
  return this.visitFfrExpression(expr, context);
23353
25231
  }
@@ -24292,6 +26170,11 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
24292
26170
  * Ivy traits.
24293
26171
  */
24294
26172
  this.fileToClasses = new Map();
26173
+ /**
26174
+ * Tracks which source files have been analyzed but did not contain any traits. This set allows
26175
+ * the compiler to skip analyzing these files in an incremental rebuild.
26176
+ */
26177
+ this.filesWithoutTraits = new Set();
24295
26178
  this.reexportMap = new Map();
24296
26179
  this.handlersByName = new Map();
24297
26180
  for (const handler of handlers) {
@@ -24314,11 +26197,16 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
24314
26197
  const promises = [];
24315
26198
  const priorWork = this.incrementalBuild.priorAnalysisFor(sf);
24316
26199
  if (priorWork !== null) {
24317
- for (const priorRecord of priorWork) {
24318
- this.adopt(priorRecord);
24319
- }
24320
26200
  this.perf.eventCount(PerfEvent.SourceFileReuseAnalysis);
24321
- this.perf.eventCount(PerfEvent.TraitReuseAnalysis, priorWork.length);
26201
+ if (priorWork.length > 0) {
26202
+ for (const priorRecord of priorWork) {
26203
+ this.adopt(priorRecord);
26204
+ }
26205
+ this.perf.eventCount(PerfEvent.TraitReuseAnalysis, priorWork.length);
26206
+ }
26207
+ else {
26208
+ this.filesWithoutTraits.add(sf);
26209
+ }
24322
26210
  // Skip the rest of analysis, as this file's prior traits are being reused.
24323
26211
  return;
24324
26212
  }
@@ -24363,6 +26251,9 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
24363
26251
  }
24364
26252
  result.set(sf, records);
24365
26253
  }
26254
+ for (const sf of this.filesWithoutTraits) {
26255
+ result.set(sf, []);
26256
+ }
24366
26257
  return result;
24367
26258
  }
24368
26259
  /**
@@ -25836,13 +27727,6 @@ define(['exports', 'typescript/lib/tsserverlibrary', 'os', 'typescript', 'fs', '
25836
27727
  */
25837
27728
  this._after = new Map();
25838
27729
  }
25839
- /**
25840
- * Visit a class declaration, returning at least the transformed declaration and optionally other
25841
- * nodes to insert before the declaration.
25842
- */
25843
- visitClassDeclaration(node) {
25844
- return { node };
25845
- }
25846
27730
  _visitListEntryNode(node, visitor) {
25847
27731
  const result = visitor(node);
25848
27732
  if (result.before !== undefined) {
@@ -29689,6 +31573,13 @@ Either add the @Injectable() decorator to '${provider.node.name
29689
31573
  class CycleAnalyzer {
29690
31574
  constructor(importGraph) {
29691
31575
  this.importGraph = importGraph;
31576
+ /**
31577
+ * Cycle detection is requested with the same `from` source file for all used directives and pipes
31578
+ * within a component, which makes it beneficial to cache the results as long as the `from` source
31579
+ * file has not changed. This avoids visiting the import graph that is reachable from multiple
31580
+ * directives/pipes more than once.
31581
+ */
31582
+ this.cachedResults = null;
29692
31583
  }
29693
31584
  /**
29694
31585
  * Check for a cycle to be created in the `ts.Program` by adding an import between `from` and
@@ -29698,10 +31589,12 @@ Either add the @Injectable() decorator to '${provider.node.name
29698
31589
  * otherwise.
29699
31590
  */
29700
31591
  wouldCreateCycle(from, to) {
31592
+ // Try to reuse the cached results as long as the `from` source file is the same.
31593
+ if (this.cachedResults === null || this.cachedResults.from !== from) {
31594
+ this.cachedResults = new CycleResults(from, this.importGraph);
31595
+ }
29701
31596
  // Import of 'from' -> 'to' is illegal if an edge 'to' -> 'from' already exists.
29702
- return this.importGraph.transitiveImportsOf(to).has(from) ?
29703
- new Cycle(this.importGraph, from, to) :
29704
- null;
31597
+ return this.cachedResults.wouldBeCyclic(to) ? new Cycle(this.importGraph, from, to) : null;
29705
31598
  }
29706
31599
  /**
29707
31600
  * Record a synthetic import from `from` to `to`.
@@ -29710,9 +31603,73 @@ Either add the @Injectable() decorator to '${provider.node.name
29710
31603
  * import graph for cycle creation.
29711
31604
  */
29712
31605
  recordSyntheticImport(from, to) {
31606
+ this.cachedResults = null;
29713
31607
  this.importGraph.addSyntheticImport(from, to);
29714
31608
  }
29715
31609
  }
31610
+ const NgCyclicResult = Symbol('NgCyclicResult');
31611
+ /**
31612
+ * Stores the results of cycle detection in a memory efficient manner. A symbol is attached to
31613
+ * source files that indicate what the cyclic analysis result is, as indicated by two markers that
31614
+ * are unique to this instance. This alleviates memory pressure in large import graphs, as each
31615
+ * execution is able to store its results in the same memory location (i.e. in the symbol
31616
+ * on the source file) as earlier executions.
31617
+ */
31618
+ class CycleResults {
31619
+ constructor(from, importGraph) {
31620
+ this.from = from;
31621
+ this.importGraph = importGraph;
31622
+ this.cyclic = {};
31623
+ this.acyclic = {};
31624
+ }
31625
+ wouldBeCyclic(sf) {
31626
+ const cached = this.getCachedResult(sf);
31627
+ if (cached !== null) {
31628
+ // The result for this source file has already been computed, so return its result.
31629
+ return cached;
31630
+ }
31631
+ if (sf === this.from) {
31632
+ // We have reached the source file that we want to create an import from, which means that
31633
+ // doing so would create a cycle.
31634
+ return true;
31635
+ }
31636
+ // Assume for now that the file will be acyclic; this prevents infinite recursion in the case
31637
+ // that `sf` is visited again as part of an existing cycle in the graph.
31638
+ this.markAcyclic(sf);
31639
+ const imports = this.importGraph.importsOf(sf);
31640
+ for (const imported of imports) {
31641
+ if (this.wouldBeCyclic(imported)) {
31642
+ this.markCyclic(sf);
31643
+ return true;
31644
+ }
31645
+ }
31646
+ return false;
31647
+ }
31648
+ /**
31649
+ * Returns whether the source file is already known to be cyclic, or `null` if the result is not
31650
+ * yet known.
31651
+ */
31652
+ getCachedResult(sf) {
31653
+ const result = sf[NgCyclicResult];
31654
+ if (result === this.cyclic) {
31655
+ return true;
31656
+ }
31657
+ else if (result === this.acyclic) {
31658
+ return false;
31659
+ }
31660
+ else {
31661
+ // Either the symbol is missing or its value does not correspond with one of the current
31662
+ // result markers. As such, the result is unknown.
31663
+ return null;
31664
+ }
31665
+ }
31666
+ markCyclic(sf) {
31667
+ sf[NgCyclicResult] = this.cyclic;
31668
+ }
31669
+ markAcyclic(sf) {
31670
+ sf[NgCyclicResult] = this.acyclic;
31671
+ }
31672
+ }
29716
31673
  /**
29717
31674
  * Represents an import cycle between `from` and `to` in the program.
29718
31675
  *
@@ -29753,7 +31710,7 @@ Either add the @Injectable() decorator to '${provider.node.name
29753
31710
  constructor(checker, perf) {
29754
31711
  this.checker = checker;
29755
31712
  this.perf = perf;
29756
- this.map = new Map();
31713
+ this.imports = new Map();
29757
31714
  }
29758
31715
  /**
29759
31716
  * List the direct (not transitive) imports of a given `ts.SourceFile`.
@@ -29761,27 +31718,10 @@ Either add the @Injectable() decorator to '${provider.node.name
29761
31718
  * This operation is cached.
29762
31719
  */
29763
31720
  importsOf(sf) {
29764
- if (!this.map.has(sf)) {
29765
- this.map.set(sf, this.scanImports(sf));
31721
+ if (!this.imports.has(sf)) {
31722
+ this.imports.set(sf, this.scanImports(sf));
29766
31723
  }
29767
- return this.map.get(sf);
29768
- }
29769
- /**
29770
- * Lists the transitive imports of a given `ts.SourceFile`.
29771
- */
29772
- transitiveImportsOf(sf) {
29773
- const imports = new Set();
29774
- this.transitiveImportsOfHelper(sf, imports);
29775
- return imports;
29776
- }
29777
- transitiveImportsOfHelper(sf, results) {
29778
- if (results.has(sf)) {
29779
- return;
29780
- }
29781
- results.add(sf);
29782
- this.importsOf(sf).forEach(imported => {
29783
- this.transitiveImportsOfHelper(imported, results);
29784
- });
31724
+ return this.imports.get(sf);
29785
31725
  }
29786
31726
  /**
29787
31727
  * Find an import path from the `start` SourceFile to the `end` SourceFile.
@@ -30079,6 +32019,213 @@ Either add the @Injectable() decorator to '${provider.node.name
30079
32019
  }
30080
32020
  }
30081
32021
 
32022
+ /**
32023
+ * @license
32024
+ * Copyright Google LLC All Rights Reserved.
32025
+ *
32026
+ * Use of this source code is governed by an MIT-style license that can be
32027
+ * found in the LICENSE file at https://angular.io/license
32028
+ */
32029
+ const NgOriginalFile = Symbol('NgOriginalFile');
32030
+ var UpdateMode;
32031
+ (function (UpdateMode) {
32032
+ /**
32033
+ * A complete update creates a completely new overlay of type-checking code on top of the user's
32034
+ * original program, which doesn't include type-checking code from previous calls to
32035
+ * `updateFiles`.
32036
+ */
32037
+ UpdateMode[UpdateMode["Complete"] = 0] = "Complete";
32038
+ /**
32039
+ * An incremental update changes the contents of some files in the type-checking program without
32040
+ * reverting any prior changes.
32041
+ */
32042
+ UpdateMode[UpdateMode["Incremental"] = 1] = "Incremental";
32043
+ })(UpdateMode || (UpdateMode = {}));
32044
+
32045
+ /**
32046
+ * @license
32047
+ * Copyright Google LLC All Rights Reserved.
32048
+ *
32049
+ * Use of this source code is governed by an MIT-style license that can be
32050
+ * found in the LICENSE file at https://angular.io/license
32051
+ */
32052
+ /**
32053
+ * A `Symbol` which is used to patch extension data onto `ts.SourceFile`s.
32054
+ */
32055
+ const NgExtension = Symbol('NgExtension');
32056
+ /**
32057
+ * Narrows a `ts.SourceFile` if it has an `NgExtension` property.
32058
+ */
32059
+ function isExtended(sf) {
32060
+ return sf[NgExtension] !== undefined;
32061
+ }
32062
+ /**
32063
+ * Check whether `sf` is a shim `ts.SourceFile` (either a per-file shim or a top-level shim).
32064
+ */
32065
+ function isShim(sf) {
32066
+ return isExtended(sf) && (sf[NgExtension].fileShim !== null || sf[NgExtension].isTopLevelShim);
32067
+ }
32068
+
32069
+ /**
32070
+ * @license
32071
+ * Copyright Google LLC All Rights Reserved.
32072
+ *
32073
+ * Use of this source code is governed by an MIT-style license that can be
32074
+ * found in the LICENSE file at https://angular.io/license
32075
+ */
32076
+ const STRIP_NG_FACTORY = /(.*)NgFactory$/;
32077
+ function generatedFactoryTransform(factoryMap, importRewriter) {
32078
+ return (context) => {
32079
+ return (file) => {
32080
+ return transformFactorySourceFile(factoryMap, context, importRewriter, file);
32081
+ };
32082
+ };
32083
+ }
32084
+ function transformFactorySourceFile(factoryMap, context, importRewriter, file) {
32085
+ // If this is not a generated file, it won't have factory info associated with it.
32086
+ if (!factoryMap.has(file.fileName)) {
32087
+ // Don't transform non-generated code.
32088
+ return file;
32089
+ }
32090
+ const { moduleSymbols, sourceFilePath } = factoryMap.get(file.fileName);
32091
+ // Not every exported factory statement is valid. They were generated before the program was
32092
+ // analyzed, and before ngtsc knew which symbols were actually NgModules. factoryMap contains
32093
+ // that knowledge now, so this transform filters the statement list and removes exported factories
32094
+ // that aren't actually factories.
32095
+ //
32096
+ // This could leave the generated factory file empty. To prevent this (it causes issues with
32097
+ // closure compiler) a 'ɵNonEmptyModule' export was added when the factory shim was created.
32098
+ // Preserve that export if needed, and remove it otherwise.
32099
+ //
32100
+ // Additionally, an import to @angular/core is generated, but the current compilation unit could
32101
+ // actually be @angular/core, in which case such an import is invalid and should be replaced with
32102
+ // the proper path to access Ivy symbols in core.
32103
+ // The filtered set of statements.
32104
+ const transformedStatements = [];
32105
+ // The statement identified as the ɵNonEmptyModule export.
32106
+ let nonEmptyExport = null;
32107
+ // Extracted identifiers which refer to import statements from @angular/core.
32108
+ const coreImportIdentifiers = new Set();
32109
+ // Consider all the statements.
32110
+ for (const stmt of file.statements) {
32111
+ // Look for imports to @angular/core.
32112
+ if (ts$1.isImportDeclaration(stmt) && ts$1.isStringLiteral(stmt.moduleSpecifier) &&
32113
+ stmt.moduleSpecifier.text === '@angular/core') {
32114
+ // Update the import path to point to the correct file using the ImportRewriter.
32115
+ const rewrittenModuleSpecifier = importRewriter.rewriteSpecifier('@angular/core', sourceFilePath);
32116
+ if (rewrittenModuleSpecifier !== stmt.moduleSpecifier.text) {
32117
+ transformedStatements.push(ts$1.updateImportDeclaration(stmt, stmt.decorators, stmt.modifiers, stmt.importClause, ts$1.createStringLiteral(rewrittenModuleSpecifier)));
32118
+ // Record the identifier by which this imported module goes, so references to its symbols
32119
+ // can be discovered later.
32120
+ if (stmt.importClause !== undefined && stmt.importClause.namedBindings !== undefined &&
32121
+ ts$1.isNamespaceImport(stmt.importClause.namedBindings)) {
32122
+ coreImportIdentifiers.add(stmt.importClause.namedBindings.name.text);
32123
+ }
32124
+ }
32125
+ else {
32126
+ transformedStatements.push(stmt);
32127
+ }
32128
+ }
32129
+ else if (ts$1.isVariableStatement(stmt) && stmt.declarationList.declarations.length === 1) {
32130
+ const decl = stmt.declarationList.declarations[0];
32131
+ // If this is the ɵNonEmptyModule export, then save it for later.
32132
+ if (ts$1.isIdentifier(decl.name)) {
32133
+ if (decl.name.text === 'ɵNonEmptyModule') {
32134
+ nonEmptyExport = stmt;
32135
+ continue;
32136
+ }
32137
+ // Otherwise, check if this export is a factory for a known NgModule, and retain it if so.
32138
+ const match = STRIP_NG_FACTORY.exec(decl.name.text);
32139
+ const module = match ? moduleSymbols.get(match[1]) : null;
32140
+ if (module) {
32141
+ // If the module can be tree shaken, then the factory should be wrapped in a
32142
+ // `noSideEffects()` call which tells Closure to treat the expression as pure, allowing
32143
+ // it to be removed if the result is not used.
32144
+ //
32145
+ // `NgModule`s with an `id` property will be lazy loaded. Google-internal lazy loading
32146
+ // infra relies on a side effect from the `new NgModuleFactory()` call, which registers
32147
+ // the module globally. Because of this, we **cannot** tree shake any module which has
32148
+ // an `id` property. Doing so would cause lazy loaded modules to never be registered.
32149
+ const moduleIsTreeShakable = !module.hasId;
32150
+ const newStmt = !moduleIsTreeShakable ?
32151
+ stmt :
32152
+ updateInitializers(stmt, (init) => init ? wrapInNoSideEffects(init) : undefined);
32153
+ transformedStatements.push(newStmt);
32154
+ }
32155
+ }
32156
+ else {
32157
+ // Leave the statement alone, as it can't be understood.
32158
+ transformedStatements.push(stmt);
32159
+ }
32160
+ }
32161
+ else {
32162
+ // Include non-variable statements (imports, etc).
32163
+ transformedStatements.push(stmt);
32164
+ }
32165
+ }
32166
+ // Check whether the empty module export is still needed.
32167
+ if (!transformedStatements.some(ts$1.isVariableStatement) && nonEmptyExport !== null) {
32168
+ // If the resulting file has no factories, include an empty export to
32169
+ // satisfy closure compiler.
32170
+ transformedStatements.push(nonEmptyExport);
32171
+ }
32172
+ file = ts$1.updateSourceFileNode(file, transformedStatements);
32173
+ // If any imports to @angular/core were detected and rewritten (which happens when compiling
32174
+ // @angular/core), go through the SourceFile and rewrite references to symbols imported from core.
32175
+ if (coreImportIdentifiers.size > 0) {
32176
+ const visit = (node) => {
32177
+ node = ts$1.visitEachChild(node, child => visit(child), context);
32178
+ // Look for expressions of the form "i.s" where 'i' is a detected name for an @angular/core
32179
+ // import that was changed above. Rewrite 's' using the ImportResolver.
32180
+ if (ts$1.isPropertyAccessExpression(node) && ts$1.isIdentifier(node.expression) &&
32181
+ coreImportIdentifiers.has(node.expression.text)) {
32182
+ // This is an import of a symbol from @angular/core. Transform it with the importRewriter.
32183
+ const rewrittenSymbol = importRewriter.rewriteSymbol(node.name.text, '@angular/core');
32184
+ if (rewrittenSymbol !== node.name.text) {
32185
+ const updated = ts$1.updatePropertyAccess(node, node.expression, ts$1.createIdentifier(rewrittenSymbol));
32186
+ node = updated;
32187
+ }
32188
+ }
32189
+ return node;
32190
+ };
32191
+ file = visit(file);
32192
+ }
32193
+ return file;
32194
+ }
32195
+ /**
32196
+ * Wraps the given expression in a call to `ɵnoSideEffects()`, which tells
32197
+ * Closure we don't care about the side effects of this expression and it should
32198
+ * be treated as "pure". Closure is free to tree shake this expression if its
32199
+ * result is not used.
32200
+ *
32201
+ * Example: Takes `1 + 2` and returns `i0.ɵnoSideEffects(() => 1 + 2)`.
32202
+ */
32203
+ function wrapInNoSideEffects(expr) {
32204
+ const noSideEffects = ts$1.createPropertyAccess(ts$1.createIdentifier('i0'), 'ɵnoSideEffects');
32205
+ return ts$1.createCall(noSideEffects,
32206
+ /* typeArguments */ [],
32207
+ /* arguments */
32208
+ [
32209
+ ts$1.createFunctionExpression(
32210
+ /* modifiers */ [],
32211
+ /* asteriskToken */ undefined,
32212
+ /* name */ undefined,
32213
+ /* typeParameters */ [],
32214
+ /* parameters */ [],
32215
+ /* type */ undefined,
32216
+ /* body */ ts$1.createBlock([
32217
+ ts$1.createReturn(expr),
32218
+ ])),
32219
+ ]);
32220
+ }
32221
+ /**
32222
+ * Clones and updates the initializers for a given statement to use the new
32223
+ * expression provided. Does not mutate the input statement.
32224
+ */
32225
+ function updateInitializers(stmt, update) {
32226
+ return ts$1.updateVariableStatement(stmt, stmt.modifiers, ts$1.updateVariableDeclarationList(stmt.declarationList, stmt.declarationList.declarations.map((decl) => ts$1.updateVariableDeclaration(decl, decl.name, decl.type, update(decl.initializer)))));
32227
+ }
32228
+
30082
32229
  /**
30083
32230
  * @license
30084
32231
  * Copyright Google LLC All Rights Reserved.
@@ -30282,11 +32429,11 @@ Either add the @Injectable() decorator to '${provider.node.name
30282
32429
  break;
30283
32430
  }
30284
32431
  const oldVersions = priorAnalysis.versions;
30285
- const oldFilesArray = oldProgram.getSourceFiles().map(sf => toUnredirectedSourceFile(sf));
32432
+ const oldFilesArray = oldProgram.getSourceFiles().map(toOriginalSourceFile);
30286
32433
  const oldFiles = new Set(oldFilesArray);
30287
32434
  const deletedTsFiles = new Set(oldFilesArray.map(sf => absoluteFromSourceFile(sf)));
30288
32435
  for (const possiblyRedirectedNewFile of program.getSourceFiles()) {
30289
- const sf = toUnredirectedSourceFile(possiblyRedirectedNewFile);
32436
+ const sf = toOriginalSourceFile(possiblyRedirectedNewFile);
30290
32437
  const sfPath = absoluteFromSourceFile(sf);
30291
32438
  // Since we're seeing a file in the incoming program with this name, it can't have been
30292
32439
  // deleted.
@@ -30476,6 +32623,31 @@ Either add the @Injectable() decorator to '${provider.node.name
30476
32623
  return this.step.priorState.emitted.has(sfPath);
30477
32624
  }
30478
32625
  }
32626
+ /**
32627
+ * To accurately detect whether a source file was affected during an incremental rebuild, the
32628
+ * "original" source file needs to be consistently used.
32629
+ *
32630
+ * First, TypeScript may have created source file redirects when declaration files of the same
32631
+ * version of a library are included multiple times. The non-redirected source file should be used
32632
+ * to detect changes, as otherwise the redirected source files cause a mismatch when compared to
32633
+ * a prior program.
32634
+ *
32635
+ * Second, the program that is used for template type checking may contain mutated source files, if
32636
+ * inline type constructors or inline template type-check blocks had to be used. Such source files
32637
+ * store their original, non-mutated source file from the original program in a symbol. For
32638
+ * computing the affected files in an incremental build this original source file should be used, as
32639
+ * the mutated source file would always be considered affected.
32640
+ */
32641
+ function toOriginalSourceFile(sf) {
32642
+ const unredirectedSf = toUnredirectedSourceFile(sf);
32643
+ const originalFile = unredirectedSf[NgOriginalFile];
32644
+ if (originalFile !== undefined) {
32645
+ return originalFile;
32646
+ }
32647
+ else {
32648
+ return unredirectedSf;
32649
+ }
32650
+ }
30479
32651
 
30480
32652
  /**
30481
32653
  * @license
@@ -32173,190 +34345,6 @@ Either add the @Injectable() decorator to '${provider.node.name
32173
34345
  }
32174
34346
  }
32175
34347
 
32176
- /**
32177
- * @license
32178
- * Copyright Google LLC All Rights Reserved.
32179
- *
32180
- * Use of this source code is governed by an MIT-style license that can be
32181
- * found in the LICENSE file at https://angular.io/license
32182
- */
32183
- /**
32184
- * A `Symbol` which is used to patch extension data onto `ts.SourceFile`s.
32185
- */
32186
- const NgExtension = Symbol('NgExtension');
32187
- /**
32188
- * Narrows a `ts.SourceFile` if it has an `NgExtension` property.
32189
- */
32190
- function isExtended(sf) {
32191
- return sf[NgExtension] !== undefined;
32192
- }
32193
- /**
32194
- * Check whether `sf` is a shim `ts.SourceFile` (either a per-file shim or a top-level shim).
32195
- */
32196
- function isShim(sf) {
32197
- return isExtended(sf) && (sf[NgExtension].fileShim !== null || sf[NgExtension].isTopLevelShim);
32198
- }
32199
-
32200
- /**
32201
- * @license
32202
- * Copyright Google LLC All Rights Reserved.
32203
- *
32204
- * Use of this source code is governed by an MIT-style license that can be
32205
- * found in the LICENSE file at https://angular.io/license
32206
- */
32207
- const STRIP_NG_FACTORY = /(.*)NgFactory$/;
32208
- function generatedFactoryTransform(factoryMap, importRewriter) {
32209
- return (context) => {
32210
- return (file) => {
32211
- return transformFactorySourceFile(factoryMap, context, importRewriter, file);
32212
- };
32213
- };
32214
- }
32215
- function transformFactorySourceFile(factoryMap, context, importRewriter, file) {
32216
- // If this is not a generated file, it won't have factory info associated with it.
32217
- if (!factoryMap.has(file.fileName)) {
32218
- // Don't transform non-generated code.
32219
- return file;
32220
- }
32221
- const { moduleSymbols, sourceFilePath } = factoryMap.get(file.fileName);
32222
- // Not every exported factory statement is valid. They were generated before the program was
32223
- // analyzed, and before ngtsc knew which symbols were actually NgModules. factoryMap contains
32224
- // that knowledge now, so this transform filters the statement list and removes exported factories
32225
- // that aren't actually factories.
32226
- //
32227
- // This could leave the generated factory file empty. To prevent this (it causes issues with
32228
- // closure compiler) a 'ɵNonEmptyModule' export was added when the factory shim was created.
32229
- // Preserve that export if needed, and remove it otherwise.
32230
- //
32231
- // Additionally, an import to @angular/core is generated, but the current compilation unit could
32232
- // actually be @angular/core, in which case such an import is invalid and should be replaced with
32233
- // the proper path to access Ivy symbols in core.
32234
- // The filtered set of statements.
32235
- const transformedStatements = [];
32236
- // The statement identified as the ɵNonEmptyModule export.
32237
- let nonEmptyExport = null;
32238
- // Extracted identifiers which refer to import statements from @angular/core.
32239
- const coreImportIdentifiers = new Set();
32240
- // Consider all the statements.
32241
- for (const stmt of file.statements) {
32242
- // Look for imports to @angular/core.
32243
- if (ts$1.isImportDeclaration(stmt) && ts$1.isStringLiteral(stmt.moduleSpecifier) &&
32244
- stmt.moduleSpecifier.text === '@angular/core') {
32245
- // Update the import path to point to the correct file using the ImportRewriter.
32246
- const rewrittenModuleSpecifier = importRewriter.rewriteSpecifier('@angular/core', sourceFilePath);
32247
- if (rewrittenModuleSpecifier !== stmt.moduleSpecifier.text) {
32248
- transformedStatements.push(ts$1.updateImportDeclaration(stmt, stmt.decorators, stmt.modifiers, stmt.importClause, ts$1.createStringLiteral(rewrittenModuleSpecifier)));
32249
- // Record the identifier by which this imported module goes, so references to its symbols
32250
- // can be discovered later.
32251
- if (stmt.importClause !== undefined && stmt.importClause.namedBindings !== undefined &&
32252
- ts$1.isNamespaceImport(stmt.importClause.namedBindings)) {
32253
- coreImportIdentifiers.add(stmt.importClause.namedBindings.name.text);
32254
- }
32255
- }
32256
- else {
32257
- transformedStatements.push(stmt);
32258
- }
32259
- }
32260
- else if (ts$1.isVariableStatement(stmt) && stmt.declarationList.declarations.length === 1) {
32261
- const decl = stmt.declarationList.declarations[0];
32262
- // If this is the ɵNonEmptyModule export, then save it for later.
32263
- if (ts$1.isIdentifier(decl.name)) {
32264
- if (decl.name.text === 'ɵNonEmptyModule') {
32265
- nonEmptyExport = stmt;
32266
- continue;
32267
- }
32268
- // Otherwise, check if this export is a factory for a known NgModule, and retain it if so.
32269
- const match = STRIP_NG_FACTORY.exec(decl.name.text);
32270
- const module = match ? moduleSymbols.get(match[1]) : null;
32271
- if (module) {
32272
- // If the module can be tree shaken, then the factory should be wrapped in a
32273
- // `noSideEffects()` call which tells Closure to treat the expression as pure, allowing
32274
- // it to be removed if the result is not used.
32275
- //
32276
- // `NgModule`s with an `id` property will be lazy loaded. Google-internal lazy loading
32277
- // infra relies on a side effect from the `new NgModuleFactory()` call, which registers
32278
- // the module globally. Because of this, we **cannot** tree shake any module which has
32279
- // an `id` property. Doing so would cause lazy loaded modules to never be registered.
32280
- const moduleIsTreeShakable = !module.hasId;
32281
- const newStmt = !moduleIsTreeShakable ?
32282
- stmt :
32283
- updateInitializers(stmt, (init) => init ? wrapInNoSideEffects(init) : undefined);
32284
- transformedStatements.push(newStmt);
32285
- }
32286
- }
32287
- else {
32288
- // Leave the statement alone, as it can't be understood.
32289
- transformedStatements.push(stmt);
32290
- }
32291
- }
32292
- else {
32293
- // Include non-variable statements (imports, etc).
32294
- transformedStatements.push(stmt);
32295
- }
32296
- }
32297
- // Check whether the empty module export is still needed.
32298
- if (!transformedStatements.some(ts$1.isVariableStatement) && nonEmptyExport !== null) {
32299
- // If the resulting file has no factories, include an empty export to
32300
- // satisfy closure compiler.
32301
- transformedStatements.push(nonEmptyExport);
32302
- }
32303
- file = ts$1.updateSourceFileNode(file, transformedStatements);
32304
- // If any imports to @angular/core were detected and rewritten (which happens when compiling
32305
- // @angular/core), go through the SourceFile and rewrite references to symbols imported from core.
32306
- if (coreImportIdentifiers.size > 0) {
32307
- const visit = (node) => {
32308
- node = ts$1.visitEachChild(node, child => visit(child), context);
32309
- // Look for expressions of the form "i.s" where 'i' is a detected name for an @angular/core
32310
- // import that was changed above. Rewrite 's' using the ImportResolver.
32311
- if (ts$1.isPropertyAccessExpression(node) && ts$1.isIdentifier(node.expression) &&
32312
- coreImportIdentifiers.has(node.expression.text)) {
32313
- // This is an import of a symbol from @angular/core. Transform it with the importRewriter.
32314
- const rewrittenSymbol = importRewriter.rewriteSymbol(node.name.text, '@angular/core');
32315
- if (rewrittenSymbol !== node.name.text) {
32316
- const updated = ts$1.updatePropertyAccess(node, node.expression, ts$1.createIdentifier(rewrittenSymbol));
32317
- node = updated;
32318
- }
32319
- }
32320
- return node;
32321
- };
32322
- file = visit(file);
32323
- }
32324
- return file;
32325
- }
32326
- /**
32327
- * Wraps the given expression in a call to `ɵnoSideEffects()`, which tells
32328
- * Closure we don't care about the side effects of this expression and it should
32329
- * be treated as "pure". Closure is free to tree shake this expression if its
32330
- * result is not used.
32331
- *
32332
- * Example: Takes `1 + 2` and returns `i0.ɵnoSideEffects(() => 1 + 2)`.
32333
- */
32334
- function wrapInNoSideEffects(expr) {
32335
- const noSideEffects = ts$1.createPropertyAccess(ts$1.createIdentifier('i0'), 'ɵnoSideEffects');
32336
- return ts$1.createCall(noSideEffects,
32337
- /* typeArguments */ [],
32338
- /* arguments */
32339
- [
32340
- ts$1.createFunctionExpression(
32341
- /* modifiers */ [],
32342
- /* asteriskToken */ undefined,
32343
- /* name */ undefined,
32344
- /* typeParameters */ [],
32345
- /* parameters */ [],
32346
- /* type */ undefined,
32347
- /* body */ ts$1.createBlock([
32348
- ts$1.createReturn(expr),
32349
- ])),
32350
- ]);
32351
- }
32352
- /**
32353
- * Clones and updates the initializers for a given statement to use the new
32354
- * expression provided. Does not mutate the input statement.
32355
- */
32356
- function updateInitializers(stmt, update) {
32357
- return ts$1.updateVariableStatement(stmt, stmt.modifiers, ts$1.updateVariableDeclarationList(stmt.declarationList, stmt.declarationList.declarations.map((decl) => ts$1.updateVariableDeclaration(decl, decl.name, decl.type, update(decl.initializer)))));
32358
- }
32359
-
32360
34348
  /**
32361
34349
  * @license
32362
34350
  * Copyright Google LLC All Rights Reserved.
@@ -32471,28 +34459,6 @@ Either add the @Injectable() decorator to '${provider.node.name
32471
34459
  decl.initializer.text.endsWith(IVY_SWITCH_PRE_SUFFIX));
32472
34460
  }
32473
34461
 
32474
- /**
32475
- * @license
32476
- * Copyright Google LLC All Rights Reserved.
32477
- *
32478
- * Use of this source code is governed by an MIT-style license that can be
32479
- * found in the LICENSE file at https://angular.io/license
32480
- */
32481
- var UpdateMode;
32482
- (function (UpdateMode) {
32483
- /**
32484
- * A complete update creates a completely new overlay of type-checking code on top of the user's
32485
- * original program, which doesn't include type-checking code from previous calls to
32486
- * `updateFiles`.
32487
- */
32488
- UpdateMode[UpdateMode["Complete"] = 0] = "Complete";
32489
- /**
32490
- * An incremental update changes the contents of some files in the type-checking program without
32491
- * reverting any prior changes.
32492
- */
32493
- UpdateMode[UpdateMode["Incremental"] = 1] = "Incremental";
32494
- })(UpdateMode || (UpdateMode = {}));
32495
-
32496
34462
  /**
32497
34463
  * @license
32498
34464
  * Copyright Google LLC All Rights Reserved.
@@ -33222,12 +35188,17 @@ Either add the @Injectable() decorator to '${provider.node.name
33222
35188
  return visitNode(type) !== INELIGIBLE;
33223
35189
  }
33224
35190
  // To determine whether a type can be emitted, we have to recursively look through all type nodes.
33225
- // If a type reference node is found at any position within the type and that type reference
33226
- // cannot be emitted, then the `INELIGIBLE` constant is returned to stop the recursive walk as
33227
- // the type as a whole cannot be emitted in that case. Otherwise, the result of visiting all child
33228
- // nodes determines the result. If no ineligible type reference node is found then the walk
33229
- // returns `undefined`, indicating that no type node was visited that could not be emitted.
35191
+ // If an unsupported type node is found at any position within the type, then the `INELIGIBLE`
35192
+ // constant is returned to stop the recursive walk as the type as a whole cannot be emitted in
35193
+ // that case. Otherwise, the result of visiting all child nodes determines the result. If no
35194
+ // ineligible type reference node is found then the walk returns `undefined`, indicating that
35195
+ // no type node was visited that could not be emitted.
33230
35196
  function visitNode(node) {
35197
+ // `import('module')` type nodes are not supported, as it may require rewriting the module
35198
+ // specifier which is currently not done.
35199
+ if (ts$1.isImportTypeNode(node)) {
35200
+ return INELIGIBLE;
35201
+ }
33231
35202
  // Emitting a type reference node in a different context requires that an import for the type
33232
35203
  // can be created. If a type reference node cannot be emitted, `INELIGIBLE` is returned to stop
33233
35204
  // the walk.
@@ -33290,9 +35261,23 @@ Either add the @Injectable() decorator to '${provider.node.name
33290
35261
  emitType(type) {
33291
35262
  const typeReferenceTransformer = context => {
33292
35263
  const visitNode = (node) => {
35264
+ if (ts$1.isImportTypeNode(node)) {
35265
+ throw new Error('Unable to emit import type');
35266
+ }
33293
35267
  if (ts$1.isTypeReferenceNode(node)) {
33294
35268
  return this.emitTypeReference(node);
33295
35269
  }
35270
+ else if (ts$1.isLiteralExpression(node)) {
35271
+ // TypeScript would typically take the emit text for a literal expression from the source
35272
+ // file itself. As the type node is being emitted into a different file, however,
35273
+ // TypeScript would extract the literal text from the wrong source file. To mitigate this
35274
+ // issue the literal is cloned and explicitly marked as synthesized by setting its text
35275
+ // range to a negative range, forcing TypeScript to determine the node's literal text from
35276
+ // the synthesized node's text instead of the incorrect source file.
35277
+ const clone = ts$1.getMutableClone(node);
35278
+ ts$1.setTextRange(clone, { pos: -1, end: -1 });
35279
+ return clone;
35280
+ }
33296
35281
  else {
33297
35282
  return ts$1.visitEachChild(node, visitNode, context);
33298
35283
  }
@@ -34986,7 +36971,7 @@ Either add the @Injectable() decorator to '${provider.node.name
34986
36971
  }
34987
36972
  /**
34988
36973
  * A `TcbOp` which constructs an instance of a non-generic directive _without_ setting any of its
34989
- * inputs. Inputs are later set in the `TcbDirectiveInputsOp`. Type checking was found to be
36974
+ * inputs. Inputs are later set in the `TcbDirectiveInputsOp`. Type checking was found to be
34990
36975
  * faster when done in this way as opposed to `TcbDirectiveCtorOp` which is only necessary when the
34991
36976
  * directive is generic.
34992
36977
  *
@@ -36598,7 +38583,10 @@ Either add the @Injectable() decorator to '${provider.node.name
36598
38583
  for (const originalSf of this.opMap.keys()) {
36599
38584
  const newText = this.transform(originalSf);
36600
38585
  if (newText !== null) {
36601
- updates.set(absoluteFromSourceFile(originalSf), newText);
38586
+ updates.set(absoluteFromSourceFile(originalSf), {
38587
+ newText,
38588
+ originalFile: originalSf,
38589
+ });
36602
38590
  }
36603
38591
  }
36604
38592
  // Then go through each input file that has pending code generation operations.
@@ -36614,7 +38602,12 @@ Either add the @Injectable() decorator to '${provider.node.name
36614
38602
  path: pendingShimData.file.fileName,
36615
38603
  templates: pendingShimData.templates,
36616
38604
  });
36617
- updates.set(pendingShimData.file.fileName, pendingShimData.file.render(false /* removeComments */));
38605
+ const sfText = pendingShimData.file.render(false /* removeComments */);
38606
+ updates.set(pendingShimData.file.fileName, {
38607
+ newText: sfText,
38608
+ // Shim files do not have an associated original file.
38609
+ originalFile: null,
38610
+ });
36618
38611
  }
36619
38612
  }
36620
38613
  return updates;
@@ -36980,7 +38973,24 @@ Either add the @Injectable() decorator to '${provider.node.name
36980
38973
  }
36981
38974
  getDirectiveMeta(host, directiveDeclaration) {
36982
38975
  var _a;
36983
- const directives = this.templateData.boundTarget.getDirectivesOfNode(host);
38976
+ let directives = this.templateData.boundTarget.getDirectivesOfNode(host);
38977
+ // `getDirectivesOfNode` will not return the directives intended for an element
38978
+ // on a microsyntax template, for example `<div *ngFor="let user of users;" dir>`,
38979
+ // the `dir` will be skipped, but it's needed in language service.
38980
+ const firstChild = host.children[0];
38981
+ if (firstChild instanceof Element) {
38982
+ const isMicrosyntaxTemplate = host instanceof Template &&
38983
+ sourceSpanEqual(firstChild.sourceSpan, host.sourceSpan);
38984
+ if (isMicrosyntaxTemplate) {
38985
+ const firstChildDirectives = this.templateData.boundTarget.getDirectivesOfNode(firstChild);
38986
+ if (firstChildDirectives !== null && directives !== null) {
38987
+ directives = directives.concat(firstChildDirectives);
38988
+ }
38989
+ else {
38990
+ directives = directives !== null && directives !== void 0 ? directives : firstChildDirectives;
38991
+ }
38992
+ }
38993
+ }
36984
38994
  if (directives === null) {
36985
38995
  return null;
36986
38996
  }
@@ -37340,6 +39350,9 @@ Either add the @Injectable() decorator to '${provider.node.name
37340
39350
  function anyNodeFilter(n) {
37341
39351
  return true;
37342
39352
  }
39353
+ function sourceSpanEqual(a, b) {
39354
+ return a.start.offset === b.start.offset && a.end.offset === b.end.offset;
39355
+ }
37343
39356
 
37344
39357
  /**
37345
39358
  * @license
@@ -40100,11 +42113,20 @@ https://v9.angular.io/guide/template-typecheck#template-type-checking`,
40100
42113
  TargetNodeKind[TargetNodeKind["AttributeInValueContext"] = 6] = "AttributeInValueContext";
40101
42114
  TargetNodeKind[TargetNodeKind["TwoWayBindingContext"] = 7] = "TwoWayBindingContext";
40102
42115
  })(TargetNodeKind || (TargetNodeKind = {}));
42116
+ /**
42117
+ * Special marker AST that can be used when the cursor is within the `sourceSpan` but not
42118
+ * the key or value span of a node with key/value spans.
42119
+ */
42120
+ class OutsideKeyValueMarkerAst extends AST {
42121
+ visit() {
42122
+ return null;
42123
+ }
42124
+ }
40103
42125
  /**
40104
42126
  * This special marker is added to the path when the cursor is within the sourceSpan but not the key
40105
42127
  * or value span of a node with key/value spans.
40106
42128
  */
40107
- const OUTSIDE_K_V_MARKER = new AST(new ParseSpan(-1, -1), new AbsoluteSourceSpan(-1, -1));
42129
+ const OUTSIDE_K_V_MARKER = new OutsideKeyValueMarkerAst(new ParseSpan(-1, -1), new AbsoluteSourceSpan(-1, -1));
40108
42130
  /**
40109
42131
  * Return the template AST node or expression AST node that most accurately
40110
42132
  * represents the node at the specified cursor `position`.
@@ -42536,7 +44558,7 @@ https://v9.angular.io/guide/template-typecheck#template-type-checking`,
42536
44558
  return program;
42537
44559
  },
42538
44560
  updateFiles(contents) {
42539
- for (const [fileName, newText] of contents) {
44561
+ for (const [fileName, { newText }] of contents) {
42540
44562
  const scriptInfo = getOrCreateTypeCheckScriptInfo(project, fileName);
42541
44563
  const snapshot = scriptInfo.getSnapshot();
42542
44564
  const length = snapshot.getLength();