@featurevisor/sdk 1.29.3 → 1.30.1
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/CHANGELOG.md +11 -0
- package/coverage/clover.xml +410 -413
- package/coverage/coverage-final.json +3 -2
- package/coverage/lcov-report/bucket.ts.html +387 -9
- package/coverage/lcov-report/conditions.ts.html +1 -1
- package/coverage/lcov-report/datafileReader.ts.html +1 -1
- package/coverage/lcov-report/emitter.ts.html +1 -1
- package/coverage/lcov-report/evaluate.ts.html +2401 -0
- package/coverage/lcov-report/feature.ts.html +1 -1
- package/coverage/lcov-report/index.html +44 -29
- package/coverage/lcov-report/instance.ts.html +80 -2396
- package/coverage/lcov-report/logger.ts.html +1 -1
- package/coverage/lcov-report/segments.ts.html +1 -1
- package/coverage/lcov.info +739 -722
- package/dist/bucket.d.ts +28 -0
- package/dist/evaluate.d.ts +59 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.gz +0 -0
- package/dist/index.mjs.map +1 -1
- package/dist/instance.d.ts +3 -44
- package/lib/bucket.d.ts +28 -0
- package/lib/evaluate.d.ts +59 -0
- package/lib/index.d.ts +1 -0
- package/lib/instance.d.ts +3 -44
- package/package.json +2 -2
- package/src/bucket.ts +126 -0
- package/src/evaluate.ts +772 -0
- package/src/index.ts +1 -0
- package/src/instance.ts +45 -817
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">82.73% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>139/168</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">55.07% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>38/69</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">82.05% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>32/39</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">83.23% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>139/167</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -651,779 +651,7 @@
|
|
|
651
651
|
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
652
|
<a name='L587'></a><a href='#L587'>587</a>
|
|
653
653
|
<a name='L588'></a><a href='#L588'>588</a>
|
|
654
|
-
<a name='L589'></a><a href='#L589'>589</a>
|
|
655
|
-
<a name='L590'></a><a href='#L590'>590</a>
|
|
656
|
-
<a name='L591'></a><a href='#L591'>591</a>
|
|
657
|
-
<a name='L592'></a><a href='#L592'>592</a>
|
|
658
|
-
<a name='L593'></a><a href='#L593'>593</a>
|
|
659
|
-
<a name='L594'></a><a href='#L594'>594</a>
|
|
660
|
-
<a name='L595'></a><a href='#L595'>595</a>
|
|
661
|
-
<a name='L596'></a><a href='#L596'>596</a>
|
|
662
|
-
<a name='L597'></a><a href='#L597'>597</a>
|
|
663
|
-
<a name='L598'></a><a href='#L598'>598</a>
|
|
664
|
-
<a name='L599'></a><a href='#L599'>599</a>
|
|
665
|
-
<a name='L600'></a><a href='#L600'>600</a>
|
|
666
|
-
<a name='L601'></a><a href='#L601'>601</a>
|
|
667
|
-
<a name='L602'></a><a href='#L602'>602</a>
|
|
668
|
-
<a name='L603'></a><a href='#L603'>603</a>
|
|
669
|
-
<a name='L604'></a><a href='#L604'>604</a>
|
|
670
|
-
<a name='L605'></a><a href='#L605'>605</a>
|
|
671
|
-
<a name='L606'></a><a href='#L606'>606</a>
|
|
672
|
-
<a name='L607'></a><a href='#L607'>607</a>
|
|
673
|
-
<a name='L608'></a><a href='#L608'>608</a>
|
|
674
|
-
<a name='L609'></a><a href='#L609'>609</a>
|
|
675
|
-
<a name='L610'></a><a href='#L610'>610</a>
|
|
676
|
-
<a name='L611'></a><a href='#L611'>611</a>
|
|
677
|
-
<a name='L612'></a><a href='#L612'>612</a>
|
|
678
|
-
<a name='L613'></a><a href='#L613'>613</a>
|
|
679
|
-
<a name='L614'></a><a href='#L614'>614</a>
|
|
680
|
-
<a name='L615'></a><a href='#L615'>615</a>
|
|
681
|
-
<a name='L616'></a><a href='#L616'>616</a>
|
|
682
|
-
<a name='L617'></a><a href='#L617'>617</a>
|
|
683
|
-
<a name='L618'></a><a href='#L618'>618</a>
|
|
684
|
-
<a name='L619'></a><a href='#L619'>619</a>
|
|
685
|
-
<a name='L620'></a><a href='#L620'>620</a>
|
|
686
|
-
<a name='L621'></a><a href='#L621'>621</a>
|
|
687
|
-
<a name='L622'></a><a href='#L622'>622</a>
|
|
688
|
-
<a name='L623'></a><a href='#L623'>623</a>
|
|
689
|
-
<a name='L624'></a><a href='#L624'>624</a>
|
|
690
|
-
<a name='L625'></a><a href='#L625'>625</a>
|
|
691
|
-
<a name='L626'></a><a href='#L626'>626</a>
|
|
692
|
-
<a name='L627'></a><a href='#L627'>627</a>
|
|
693
|
-
<a name='L628'></a><a href='#L628'>628</a>
|
|
694
|
-
<a name='L629'></a><a href='#L629'>629</a>
|
|
695
|
-
<a name='L630'></a><a href='#L630'>630</a>
|
|
696
|
-
<a name='L631'></a><a href='#L631'>631</a>
|
|
697
|
-
<a name='L632'></a><a href='#L632'>632</a>
|
|
698
|
-
<a name='L633'></a><a href='#L633'>633</a>
|
|
699
|
-
<a name='L634'></a><a href='#L634'>634</a>
|
|
700
|
-
<a name='L635'></a><a href='#L635'>635</a>
|
|
701
|
-
<a name='L636'></a><a href='#L636'>636</a>
|
|
702
|
-
<a name='L637'></a><a href='#L637'>637</a>
|
|
703
|
-
<a name='L638'></a><a href='#L638'>638</a>
|
|
704
|
-
<a name='L639'></a><a href='#L639'>639</a>
|
|
705
|
-
<a name='L640'></a><a href='#L640'>640</a>
|
|
706
|
-
<a name='L641'></a><a href='#L641'>641</a>
|
|
707
|
-
<a name='L642'></a><a href='#L642'>642</a>
|
|
708
|
-
<a name='L643'></a><a href='#L643'>643</a>
|
|
709
|
-
<a name='L644'></a><a href='#L644'>644</a>
|
|
710
|
-
<a name='L645'></a><a href='#L645'>645</a>
|
|
711
|
-
<a name='L646'></a><a href='#L646'>646</a>
|
|
712
|
-
<a name='L647'></a><a href='#L647'>647</a>
|
|
713
|
-
<a name='L648'></a><a href='#L648'>648</a>
|
|
714
|
-
<a name='L649'></a><a href='#L649'>649</a>
|
|
715
|
-
<a name='L650'></a><a href='#L650'>650</a>
|
|
716
|
-
<a name='L651'></a><a href='#L651'>651</a>
|
|
717
|
-
<a name='L652'></a><a href='#L652'>652</a>
|
|
718
|
-
<a name='L653'></a><a href='#L653'>653</a>
|
|
719
|
-
<a name='L654'></a><a href='#L654'>654</a>
|
|
720
|
-
<a name='L655'></a><a href='#L655'>655</a>
|
|
721
|
-
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
|
-
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
|
-
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
-
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
-
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
-
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
-
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
-
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
-
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
-
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
-
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
-
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
-
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
-
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
-
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
-
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
-
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
-
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
-
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
-
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
-
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
-
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
-
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
-
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
-
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
-
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
-
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
-
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
-
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
-
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
-
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
-
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
-
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
-
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
-
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
-
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
-
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
-
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
-
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
-
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
-
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
-
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
-
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
-
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
-
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
-
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
-
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
-
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
-
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
-
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
-
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
-
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
-
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
-
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
-
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
-
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
-
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
-
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
-
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
-
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
-
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
-
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
-
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
-
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
-
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
-
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
-
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
-
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
-
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
-
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
-
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
-
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
-
<a name='L729'></a><a href='#L729'>729</a>
|
|
795
|
-
<a name='L730'></a><a href='#L730'>730</a>
|
|
796
|
-
<a name='L731'></a><a href='#L731'>731</a>
|
|
797
|
-
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
-
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
-
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
-
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
-
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
-
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
-
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
-
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
-
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
-
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
-
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
-
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
-
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
-
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
-
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
-
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
-
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
-
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
-
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
-
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
-
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
-
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
-
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
-
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
-
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
-
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
-
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
-
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
-
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
-
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
-
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
-
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
-
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
-
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
-
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
-
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
-
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
-
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
-
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
-
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
-
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
-
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
-
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
-
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
-
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
-
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
-
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
-
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
-
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
-
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
-
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
-
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
-
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
-
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
-
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
-
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
-
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
-
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
-
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
-
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
-
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
-
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
-
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
-
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
-
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
-
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
-
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
-
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
-
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
-
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
-
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
-
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
-
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
-
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
-
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
-
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
-
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
-
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
-
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
-
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
-
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
-
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
-
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
-
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
-
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
-
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
-
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
-
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
-
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
-
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
-
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
-
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
-
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
-
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
-
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
-
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
-
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
-
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
-
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
-
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
-
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
-
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
-
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
-
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
-
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
-
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
-
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
-
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
-
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
-
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
-
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
-
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
-
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
-
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
-
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
-
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
-
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
-
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
-
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
-
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
-
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
-
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
-
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
-
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
-
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
-
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
-
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
-
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
-
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
-
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
-
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
-
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
-
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
-
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
-
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
-
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
-
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
-
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
-
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
-
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
-
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
-
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
-
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
-
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
-
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
-
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
-
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
-
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
-
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
-
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
-
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
-
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
-
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
-
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
-
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
-
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
-
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
-
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
-
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
-
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
-
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
-
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
-
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
-
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
-
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
-
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
-
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
-
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
-
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
-
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
-
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
-
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
-
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
-
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
-
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
-
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
-
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
-
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
-
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
-
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
-
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
-
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
-
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
-
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
-
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
-
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
-
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
-
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
-
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
-
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
-
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
-
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
-
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
-
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
-
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
-
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
-
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
-
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
-
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
-
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
-
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
-
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
-
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
-
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
-
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
-
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
-
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
-
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
-
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
-
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
-
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
-
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
-
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
-
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
-
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
-
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
-
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
-
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
-
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
-
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
-
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
-
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
-
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
-
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
-
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
-
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
-
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
-
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
-
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
-
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
-
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
-
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
-
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
-
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
-
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
-
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
-
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
-
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
-
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
-
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
-
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
-
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
-
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
-
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
-
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
-
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
-
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
-
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
-
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
-
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
-
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
-
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
-
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
-
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
-
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
-
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
-
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
-
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
-
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
-
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
-
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
-
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
-
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
-
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
-
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
-
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
-
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
-
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
-
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
-
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
-
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
-
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
-
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
-
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
-
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
-
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
-
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
-
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
-
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
-
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
-
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
-
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
-
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
-
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
-
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
-
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
-
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
-
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
-
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
-
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
-
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
-
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
-
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
-
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
-
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
-
<a name='L1088'></a><a href='#L1088'>1088</a>
|
|
1154
|
-
<a name='L1089'></a><a href='#L1089'>1089</a>
|
|
1155
|
-
<a name='L1090'></a><a href='#L1090'>1090</a>
|
|
1156
|
-
<a name='L1091'></a><a href='#L1091'>1091</a>
|
|
1157
|
-
<a name='L1092'></a><a href='#L1092'>1092</a>
|
|
1158
|
-
<a name='L1093'></a><a href='#L1093'>1093</a>
|
|
1159
|
-
<a name='L1094'></a><a href='#L1094'>1094</a>
|
|
1160
|
-
<a name='L1095'></a><a href='#L1095'>1095</a>
|
|
1161
|
-
<a name='L1096'></a><a href='#L1096'>1096</a>
|
|
1162
|
-
<a name='L1097'></a><a href='#L1097'>1097</a>
|
|
1163
|
-
<a name='L1098'></a><a href='#L1098'>1098</a>
|
|
1164
|
-
<a name='L1099'></a><a href='#L1099'>1099</a>
|
|
1165
|
-
<a name='L1100'></a><a href='#L1100'>1100</a>
|
|
1166
|
-
<a name='L1101'></a><a href='#L1101'>1101</a>
|
|
1167
|
-
<a name='L1102'></a><a href='#L1102'>1102</a>
|
|
1168
|
-
<a name='L1103'></a><a href='#L1103'>1103</a>
|
|
1169
|
-
<a name='L1104'></a><a href='#L1104'>1104</a>
|
|
1170
|
-
<a name='L1105'></a><a href='#L1105'>1105</a>
|
|
1171
|
-
<a name='L1106'></a><a href='#L1106'>1106</a>
|
|
1172
|
-
<a name='L1107'></a><a href='#L1107'>1107</a>
|
|
1173
|
-
<a name='L1108'></a><a href='#L1108'>1108</a>
|
|
1174
|
-
<a name='L1109'></a><a href='#L1109'>1109</a>
|
|
1175
|
-
<a name='L1110'></a><a href='#L1110'>1110</a>
|
|
1176
|
-
<a name='L1111'></a><a href='#L1111'>1111</a>
|
|
1177
|
-
<a name='L1112'></a><a href='#L1112'>1112</a>
|
|
1178
|
-
<a name='L1113'></a><a href='#L1113'>1113</a>
|
|
1179
|
-
<a name='L1114'></a><a href='#L1114'>1114</a>
|
|
1180
|
-
<a name='L1115'></a><a href='#L1115'>1115</a>
|
|
1181
|
-
<a name='L1116'></a><a href='#L1116'>1116</a>
|
|
1182
|
-
<a name='L1117'></a><a href='#L1117'>1117</a>
|
|
1183
|
-
<a name='L1118'></a><a href='#L1118'>1118</a>
|
|
1184
|
-
<a name='L1119'></a><a href='#L1119'>1119</a>
|
|
1185
|
-
<a name='L1120'></a><a href='#L1120'>1120</a>
|
|
1186
|
-
<a name='L1121'></a><a href='#L1121'>1121</a>
|
|
1187
|
-
<a name='L1122'></a><a href='#L1122'>1122</a>
|
|
1188
|
-
<a name='L1123'></a><a href='#L1123'>1123</a>
|
|
1189
|
-
<a name='L1124'></a><a href='#L1124'>1124</a>
|
|
1190
|
-
<a name='L1125'></a><a href='#L1125'>1125</a>
|
|
1191
|
-
<a name='L1126'></a><a href='#L1126'>1126</a>
|
|
1192
|
-
<a name='L1127'></a><a href='#L1127'>1127</a>
|
|
1193
|
-
<a name='L1128'></a><a href='#L1128'>1128</a>
|
|
1194
|
-
<a name='L1129'></a><a href='#L1129'>1129</a>
|
|
1195
|
-
<a name='L1130'></a><a href='#L1130'>1130</a>
|
|
1196
|
-
<a name='L1131'></a><a href='#L1131'>1131</a>
|
|
1197
|
-
<a name='L1132'></a><a href='#L1132'>1132</a>
|
|
1198
|
-
<a name='L1133'></a><a href='#L1133'>1133</a>
|
|
1199
|
-
<a name='L1134'></a><a href='#L1134'>1134</a>
|
|
1200
|
-
<a name='L1135'></a><a href='#L1135'>1135</a>
|
|
1201
|
-
<a name='L1136'></a><a href='#L1136'>1136</a>
|
|
1202
|
-
<a name='L1137'></a><a href='#L1137'>1137</a>
|
|
1203
|
-
<a name='L1138'></a><a href='#L1138'>1138</a>
|
|
1204
|
-
<a name='L1139'></a><a href='#L1139'>1139</a>
|
|
1205
|
-
<a name='L1140'></a><a href='#L1140'>1140</a>
|
|
1206
|
-
<a name='L1141'></a><a href='#L1141'>1141</a>
|
|
1207
|
-
<a name='L1142'></a><a href='#L1142'>1142</a>
|
|
1208
|
-
<a name='L1143'></a><a href='#L1143'>1143</a>
|
|
1209
|
-
<a name='L1144'></a><a href='#L1144'>1144</a>
|
|
1210
|
-
<a name='L1145'></a><a href='#L1145'>1145</a>
|
|
1211
|
-
<a name='L1146'></a><a href='#L1146'>1146</a>
|
|
1212
|
-
<a name='L1147'></a><a href='#L1147'>1147</a>
|
|
1213
|
-
<a name='L1148'></a><a href='#L1148'>1148</a>
|
|
1214
|
-
<a name='L1149'></a><a href='#L1149'>1149</a>
|
|
1215
|
-
<a name='L1150'></a><a href='#L1150'>1150</a>
|
|
1216
|
-
<a name='L1151'></a><a href='#L1151'>1151</a>
|
|
1217
|
-
<a name='L1152'></a><a href='#L1152'>1152</a>
|
|
1218
|
-
<a name='L1153'></a><a href='#L1153'>1153</a>
|
|
1219
|
-
<a name='L1154'></a><a href='#L1154'>1154</a>
|
|
1220
|
-
<a name='L1155'></a><a href='#L1155'>1155</a>
|
|
1221
|
-
<a name='L1156'></a><a href='#L1156'>1156</a>
|
|
1222
|
-
<a name='L1157'></a><a href='#L1157'>1157</a>
|
|
1223
|
-
<a name='L1158'></a><a href='#L1158'>1158</a>
|
|
1224
|
-
<a name='L1159'></a><a href='#L1159'>1159</a>
|
|
1225
|
-
<a name='L1160'></a><a href='#L1160'>1160</a>
|
|
1226
|
-
<a name='L1161'></a><a href='#L1161'>1161</a>
|
|
1227
|
-
<a name='L1162'></a><a href='#L1162'>1162</a>
|
|
1228
|
-
<a name='L1163'></a><a href='#L1163'>1163</a>
|
|
1229
|
-
<a name='L1164'></a><a href='#L1164'>1164</a>
|
|
1230
|
-
<a name='L1165'></a><a href='#L1165'>1165</a>
|
|
1231
|
-
<a name='L1166'></a><a href='#L1166'>1166</a>
|
|
1232
|
-
<a name='L1167'></a><a href='#L1167'>1167</a>
|
|
1233
|
-
<a name='L1168'></a><a href='#L1168'>1168</a>
|
|
1234
|
-
<a name='L1169'></a><a href='#L1169'>1169</a>
|
|
1235
|
-
<a name='L1170'></a><a href='#L1170'>1170</a>
|
|
1236
|
-
<a name='L1171'></a><a href='#L1171'>1171</a>
|
|
1237
|
-
<a name='L1172'></a><a href='#L1172'>1172</a>
|
|
1238
|
-
<a name='L1173'></a><a href='#L1173'>1173</a>
|
|
1239
|
-
<a name='L1174'></a><a href='#L1174'>1174</a>
|
|
1240
|
-
<a name='L1175'></a><a href='#L1175'>1175</a>
|
|
1241
|
-
<a name='L1176'></a><a href='#L1176'>1176</a>
|
|
1242
|
-
<a name='L1177'></a><a href='#L1177'>1177</a>
|
|
1243
|
-
<a name='L1178'></a><a href='#L1178'>1178</a>
|
|
1244
|
-
<a name='L1179'></a><a href='#L1179'>1179</a>
|
|
1245
|
-
<a name='L1180'></a><a href='#L1180'>1180</a>
|
|
1246
|
-
<a name='L1181'></a><a href='#L1181'>1181</a>
|
|
1247
|
-
<a name='L1182'></a><a href='#L1182'>1182</a>
|
|
1248
|
-
<a name='L1183'></a><a href='#L1183'>1183</a>
|
|
1249
|
-
<a name='L1184'></a><a href='#L1184'>1184</a>
|
|
1250
|
-
<a name='L1185'></a><a href='#L1185'>1185</a>
|
|
1251
|
-
<a name='L1186'></a><a href='#L1186'>1186</a>
|
|
1252
|
-
<a name='L1187'></a><a href='#L1187'>1187</a>
|
|
1253
|
-
<a name='L1188'></a><a href='#L1188'>1188</a>
|
|
1254
|
-
<a name='L1189'></a><a href='#L1189'>1189</a>
|
|
1255
|
-
<a name='L1190'></a><a href='#L1190'>1190</a>
|
|
1256
|
-
<a name='L1191'></a><a href='#L1191'>1191</a>
|
|
1257
|
-
<a name='L1192'></a><a href='#L1192'>1192</a>
|
|
1258
|
-
<a name='L1193'></a><a href='#L1193'>1193</a>
|
|
1259
|
-
<a name='L1194'></a><a href='#L1194'>1194</a>
|
|
1260
|
-
<a name='L1195'></a><a href='#L1195'>1195</a>
|
|
1261
|
-
<a name='L1196'></a><a href='#L1196'>1196</a>
|
|
1262
|
-
<a name='L1197'></a><a href='#L1197'>1197</a>
|
|
1263
|
-
<a name='L1198'></a><a href='#L1198'>1198</a>
|
|
1264
|
-
<a name='L1199'></a><a href='#L1199'>1199</a>
|
|
1265
|
-
<a name='L1200'></a><a href='#L1200'>1200</a>
|
|
1266
|
-
<a name='L1201'></a><a href='#L1201'>1201</a>
|
|
1267
|
-
<a name='L1202'></a><a href='#L1202'>1202</a>
|
|
1268
|
-
<a name='L1203'></a><a href='#L1203'>1203</a>
|
|
1269
|
-
<a name='L1204'></a><a href='#L1204'>1204</a>
|
|
1270
|
-
<a name='L1205'></a><a href='#L1205'>1205</a>
|
|
1271
|
-
<a name='L1206'></a><a href='#L1206'>1206</a>
|
|
1272
|
-
<a name='L1207'></a><a href='#L1207'>1207</a>
|
|
1273
|
-
<a name='L1208'></a><a href='#L1208'>1208</a>
|
|
1274
|
-
<a name='L1209'></a><a href='#L1209'>1209</a>
|
|
1275
|
-
<a name='L1210'></a><a href='#L1210'>1210</a>
|
|
1276
|
-
<a name='L1211'></a><a href='#L1211'>1211</a>
|
|
1277
|
-
<a name='L1212'></a><a href='#L1212'>1212</a>
|
|
1278
|
-
<a name='L1213'></a><a href='#L1213'>1213</a>
|
|
1279
|
-
<a name='L1214'></a><a href='#L1214'>1214</a>
|
|
1280
|
-
<a name='L1215'></a><a href='#L1215'>1215</a>
|
|
1281
|
-
<a name='L1216'></a><a href='#L1216'>1216</a>
|
|
1282
|
-
<a name='L1217'></a><a href='#L1217'>1217</a>
|
|
1283
|
-
<a name='L1218'></a><a href='#L1218'>1218</a>
|
|
1284
|
-
<a name='L1219'></a><a href='#L1219'>1219</a>
|
|
1285
|
-
<a name='L1220'></a><a href='#L1220'>1220</a>
|
|
1286
|
-
<a name='L1221'></a><a href='#L1221'>1221</a>
|
|
1287
|
-
<a name='L1222'></a><a href='#L1222'>1222</a>
|
|
1288
|
-
<a name='L1223'></a><a href='#L1223'>1223</a>
|
|
1289
|
-
<a name='L1224'></a><a href='#L1224'>1224</a>
|
|
1290
|
-
<a name='L1225'></a><a href='#L1225'>1225</a>
|
|
1291
|
-
<a name='L1226'></a><a href='#L1226'>1226</a>
|
|
1292
|
-
<a name='L1227'></a><a href='#L1227'>1227</a>
|
|
1293
|
-
<a name='L1228'></a><a href='#L1228'>1228</a>
|
|
1294
|
-
<a name='L1229'></a><a href='#L1229'>1229</a>
|
|
1295
|
-
<a name='L1230'></a><a href='#L1230'>1230</a>
|
|
1296
|
-
<a name='L1231'></a><a href='#L1231'>1231</a>
|
|
1297
|
-
<a name='L1232'></a><a href='#L1232'>1232</a>
|
|
1298
|
-
<a name='L1233'></a><a href='#L1233'>1233</a>
|
|
1299
|
-
<a name='L1234'></a><a href='#L1234'>1234</a>
|
|
1300
|
-
<a name='L1235'></a><a href='#L1235'>1235</a>
|
|
1301
|
-
<a name='L1236'></a><a href='#L1236'>1236</a>
|
|
1302
|
-
<a name='L1237'></a><a href='#L1237'>1237</a>
|
|
1303
|
-
<a name='L1238'></a><a href='#L1238'>1238</a>
|
|
1304
|
-
<a name='L1239'></a><a href='#L1239'>1239</a>
|
|
1305
|
-
<a name='L1240'></a><a href='#L1240'>1240</a>
|
|
1306
|
-
<a name='L1241'></a><a href='#L1241'>1241</a>
|
|
1307
|
-
<a name='L1242'></a><a href='#L1242'>1242</a>
|
|
1308
|
-
<a name='L1243'></a><a href='#L1243'>1243</a>
|
|
1309
|
-
<a name='L1244'></a><a href='#L1244'>1244</a>
|
|
1310
|
-
<a name='L1245'></a><a href='#L1245'>1245</a>
|
|
1311
|
-
<a name='L1246'></a><a href='#L1246'>1246</a>
|
|
1312
|
-
<a name='L1247'></a><a href='#L1247'>1247</a>
|
|
1313
|
-
<a name='L1248'></a><a href='#L1248'>1248</a>
|
|
1314
|
-
<a name='L1249'></a><a href='#L1249'>1249</a>
|
|
1315
|
-
<a name='L1250'></a><a href='#L1250'>1250</a>
|
|
1316
|
-
<a name='L1251'></a><a href='#L1251'>1251</a>
|
|
1317
|
-
<a name='L1252'></a><a href='#L1252'>1252</a>
|
|
1318
|
-
<a name='L1253'></a><a href='#L1253'>1253</a>
|
|
1319
|
-
<a name='L1254'></a><a href='#L1254'>1254</a>
|
|
1320
|
-
<a name='L1255'></a><a href='#L1255'>1255</a>
|
|
1321
|
-
<a name='L1256'></a><a href='#L1256'>1256</a>
|
|
1322
|
-
<a name='L1257'></a><a href='#L1257'>1257</a>
|
|
1323
|
-
<a name='L1258'></a><a href='#L1258'>1258</a>
|
|
1324
|
-
<a name='L1259'></a><a href='#L1259'>1259</a>
|
|
1325
|
-
<a name='L1260'></a><a href='#L1260'>1260</a>
|
|
1326
|
-
<a name='L1261'></a><a href='#L1261'>1261</a>
|
|
1327
|
-
<a name='L1262'></a><a href='#L1262'>1262</a>
|
|
1328
|
-
<a name='L1263'></a><a href='#L1263'>1263</a>
|
|
1329
|
-
<a name='L1264'></a><a href='#L1264'>1264</a>
|
|
1330
|
-
<a name='L1265'></a><a href='#L1265'>1265</a>
|
|
1331
|
-
<a name='L1266'></a><a href='#L1266'>1266</a>
|
|
1332
|
-
<a name='L1267'></a><a href='#L1267'>1267</a>
|
|
1333
|
-
<a name='L1268'></a><a href='#L1268'>1268</a>
|
|
1334
|
-
<a name='L1269'></a><a href='#L1269'>1269</a>
|
|
1335
|
-
<a name='L1270'></a><a href='#L1270'>1270</a>
|
|
1336
|
-
<a name='L1271'></a><a href='#L1271'>1271</a>
|
|
1337
|
-
<a name='L1272'></a><a href='#L1272'>1272</a>
|
|
1338
|
-
<a name='L1273'></a><a href='#L1273'>1273</a>
|
|
1339
|
-
<a name='L1274'></a><a href='#L1274'>1274</a>
|
|
1340
|
-
<a name='L1275'></a><a href='#L1275'>1275</a>
|
|
1341
|
-
<a name='L1276'></a><a href='#L1276'>1276</a>
|
|
1342
|
-
<a name='L1277'></a><a href='#L1277'>1277</a>
|
|
1343
|
-
<a name='L1278'></a><a href='#L1278'>1278</a>
|
|
1344
|
-
<a name='L1279'></a><a href='#L1279'>1279</a>
|
|
1345
|
-
<a name='L1280'></a><a href='#L1280'>1280</a>
|
|
1346
|
-
<a name='L1281'></a><a href='#L1281'>1281</a>
|
|
1347
|
-
<a name='L1282'></a><a href='#L1282'>1282</a>
|
|
1348
|
-
<a name='L1283'></a><a href='#L1283'>1283</a>
|
|
1349
|
-
<a name='L1284'></a><a href='#L1284'>1284</a>
|
|
1350
|
-
<a name='L1285'></a><a href='#L1285'>1285</a>
|
|
1351
|
-
<a name='L1286'></a><a href='#L1286'>1286</a>
|
|
1352
|
-
<a name='L1287'></a><a href='#L1287'>1287</a>
|
|
1353
|
-
<a name='L1288'></a><a href='#L1288'>1288</a>
|
|
1354
|
-
<a name='L1289'></a><a href='#L1289'>1289</a>
|
|
1355
|
-
<a name='L1290'></a><a href='#L1290'>1290</a>
|
|
1356
|
-
<a name='L1291'></a><a href='#L1291'>1291</a>
|
|
1357
|
-
<a name='L1292'></a><a href='#L1292'>1292</a>
|
|
1358
|
-
<a name='L1293'></a><a href='#L1293'>1293</a>
|
|
1359
|
-
<a name='L1294'></a><a href='#L1294'>1294</a>
|
|
1360
|
-
<a name='L1295'></a><a href='#L1295'>1295</a>
|
|
1361
|
-
<a name='L1296'></a><a href='#L1296'>1296</a>
|
|
1362
|
-
<a name='L1297'></a><a href='#L1297'>1297</a>
|
|
1363
|
-
<a name='L1298'></a><a href='#L1298'>1298</a>
|
|
1364
|
-
<a name='L1299'></a><a href='#L1299'>1299</a>
|
|
1365
|
-
<a name='L1300'></a><a href='#L1300'>1300</a>
|
|
1366
|
-
<a name='L1301'></a><a href='#L1301'>1301</a>
|
|
1367
|
-
<a name='L1302'></a><a href='#L1302'>1302</a>
|
|
1368
|
-
<a name='L1303'></a><a href='#L1303'>1303</a>
|
|
1369
|
-
<a name='L1304'></a><a href='#L1304'>1304</a>
|
|
1370
|
-
<a name='L1305'></a><a href='#L1305'>1305</a>
|
|
1371
|
-
<a name='L1306'></a><a href='#L1306'>1306</a>
|
|
1372
|
-
<a name='L1307'></a><a href='#L1307'>1307</a>
|
|
1373
|
-
<a name='L1308'></a><a href='#L1308'>1308</a>
|
|
1374
|
-
<a name='L1309'></a><a href='#L1309'>1309</a>
|
|
1375
|
-
<a name='L1310'></a><a href='#L1310'>1310</a>
|
|
1376
|
-
<a name='L1311'></a><a href='#L1311'>1311</a>
|
|
1377
|
-
<a name='L1312'></a><a href='#L1312'>1312</a>
|
|
1378
|
-
<a name='L1313'></a><a href='#L1313'>1313</a>
|
|
1379
|
-
<a name='L1314'></a><a href='#L1314'>1314</a>
|
|
1380
|
-
<a name='L1315'></a><a href='#L1315'>1315</a>
|
|
1381
|
-
<a name='L1316'></a><a href='#L1316'>1316</a>
|
|
1382
|
-
<a name='L1317'></a><a href='#L1317'>1317</a>
|
|
1383
|
-
<a name='L1318'></a><a href='#L1318'>1318</a>
|
|
1384
|
-
<a name='L1319'></a><a href='#L1319'>1319</a>
|
|
1385
|
-
<a name='L1320'></a><a href='#L1320'>1320</a>
|
|
1386
|
-
<a name='L1321'></a><a href='#L1321'>1321</a>
|
|
1387
|
-
<a name='L1322'></a><a href='#L1322'>1322</a>
|
|
1388
|
-
<a name='L1323'></a><a href='#L1323'>1323</a>
|
|
1389
|
-
<a name='L1324'></a><a href='#L1324'>1324</a>
|
|
1390
|
-
<a name='L1325'></a><a href='#L1325'>1325</a>
|
|
1391
|
-
<a name='L1326'></a><a href='#L1326'>1326</a>
|
|
1392
|
-
<a name='L1327'></a><a href='#L1327'>1327</a>
|
|
1393
|
-
<a name='L1328'></a><a href='#L1328'>1328</a>
|
|
1394
|
-
<a name='L1329'></a><a href='#L1329'>1329</a>
|
|
1395
|
-
<a name='L1330'></a><a href='#L1330'>1330</a>
|
|
1396
|
-
<a name='L1331'></a><a href='#L1331'>1331</a>
|
|
1397
|
-
<a name='L1332'></a><a href='#L1332'>1332</a>
|
|
1398
|
-
<a name='L1333'></a><a href='#L1333'>1333</a>
|
|
1399
|
-
<a name='L1334'></a><a href='#L1334'>1334</a>
|
|
1400
|
-
<a name='L1335'></a><a href='#L1335'>1335</a>
|
|
1401
|
-
<a name='L1336'></a><a href='#L1336'>1336</a>
|
|
1402
|
-
<a name='L1337'></a><a href='#L1337'>1337</a>
|
|
1403
|
-
<a name='L1338'></a><a href='#L1338'>1338</a>
|
|
1404
|
-
<a name='L1339'></a><a href='#L1339'>1339</a>
|
|
1405
|
-
<a name='L1340'></a><a href='#L1340'>1340</a>
|
|
1406
|
-
<a name='L1341'></a><a href='#L1341'>1341</a>
|
|
1407
|
-
<a name='L1342'></a><a href='#L1342'>1342</a>
|
|
1408
|
-
<a name='L1343'></a><a href='#L1343'>1343</a>
|
|
1409
|
-
<a name='L1344'></a><a href='#L1344'>1344</a>
|
|
1410
|
-
<a name='L1345'></a><a href='#L1345'>1345</a>
|
|
1411
|
-
<a name='L1346'></a><a href='#L1346'>1346</a>
|
|
1412
|
-
<a name='L1347'></a><a href='#L1347'>1347</a>
|
|
1413
|
-
<a name='L1348'></a><a href='#L1348'>1348</a>
|
|
1414
|
-
<a name='L1349'></a><a href='#L1349'>1349</a>
|
|
1415
|
-
<a name='L1350'></a><a href='#L1350'>1350</a>
|
|
1416
|
-
<a name='L1351'></a><a href='#L1351'>1351</a>
|
|
1417
|
-
<a name='L1352'></a><a href='#L1352'>1352</a>
|
|
1418
|
-
<a name='L1353'></a><a href='#L1353'>1353</a>
|
|
1419
|
-
<a name='L1354'></a><a href='#L1354'>1354</a>
|
|
1420
|
-
<a name='L1355'></a><a href='#L1355'>1355</a>
|
|
1421
|
-
<a name='L1356'></a><a href='#L1356'>1356</a>
|
|
1422
|
-
<a name='L1357'></a><a href='#L1357'>1357</a>
|
|
1423
|
-
<a name='L1358'></a><a href='#L1358'>1358</a>
|
|
1424
|
-
<a name='L1359'></a><a href='#L1359'>1359</a>
|
|
1425
|
-
<a name='L1360'></a><a href='#L1360'>1360</a>
|
|
1426
|
-
<a name='L1361'></a><a href='#L1361'>1361</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
654
|
+
<a name='L589'></a><a href='#L589'>589</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1427
655
|
<span class="cline-any cline-neutral"> </span>
|
|
1428
656
|
<span class="cline-any cline-neutral"> </span>
|
|
1429
657
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1436,32 +664,11 @@
|
|
|
1436
664
|
<span class="cline-any cline-neutral"> </span>
|
|
1437
665
|
<span class="cline-any cline-neutral"> </span>
|
|
1438
666
|
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1450
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1451
667
|
<span class="cline-any cline-yes">1x</span>
|
|
1452
668
|
<span class="cline-any cline-yes">1x</span>
|
|
1453
669
|
<span class="cline-any cline-yes">1x</span>
|
|
1454
670
|
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1459
671
|
<span class="cline-any cline-yes">1x</span>
|
|
1460
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1465
672
|
<span class="cline-any cline-neutral"> </span>
|
|
1466
673
|
<span class="cline-any cline-neutral"> </span>
|
|
1467
674
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1509,51 +716,6 @@
|
|
|
1509
716
|
<span class="cline-any cline-neutral"> </span>
|
|
1510
717
|
<span class="cline-any cline-neutral"> </span>
|
|
1511
718
|
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1513
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1514
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1515
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1516
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1517
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1518
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1519
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1520
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1521
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1522
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1523
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1524
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1525
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1526
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1557
719
|
<span class="cline-any cline-neutral"> </span>
|
|
1558
720
|
<span class="cline-any cline-neutral"> </span>
|
|
1559
721
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1741,86 +903,9 @@
|
|
|
1741
903
|
<span class="cline-any cline-neutral"> </span>
|
|
1742
904
|
<span class="cline-any cline-neutral"> </span>
|
|
1743
905
|
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
-
<span class="cline-any cline-yes">116x</span>
|
|
1745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1751
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1758
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1759
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1760
|
-
<span class="cline-any cline-yes">88x</span>
|
|
1761
|
-
<span class="cline-any cline-yes">7x</span>
|
|
1762
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1763
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1764
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1765
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1766
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1767
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
-
<span class="cline-any cline-no"> </span>
|
|
1769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1770
906
|
<span class="cline-any cline-no"> </span>
|
|
1771
907
|
<span class="cline-any cline-neutral"> </span>
|
|
1772
908
|
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1776
|
-
<span class="cline-any cline-yes">102x</span>
|
|
1777
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-yes">102x</span>
|
|
1779
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
-
<span class="cline-any cline-yes">89x</span>
|
|
1783
|
-
<span class="cline-any cline-yes">81x</span>
|
|
1784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
-
<span class="cline-any cline-yes">8x</span>
|
|
1787
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1792
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1793
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1795
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1797
|
-
<span class="cline-any cline-yes">10x</span>
|
|
1798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
-
<span class="cline-any cline-yes">85x</span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1807
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1811
|
-
<span class="cline-any cline-yes">95x</span>
|
|
1812
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1820
|
-
<span class="cline-any cline-yes">93x</span>
|
|
1821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1824
909
|
<span class="cline-any cline-neutral"> </span>
|
|
1825
910
|
<span class="cline-any cline-neutral"> </span>
|
|
1826
911
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1899,80 +984,47 @@
|
|
|
1899
984
|
<span class="cline-any cline-neutral"> </span>
|
|
1900
985
|
<span class="cline-any cline-neutral"> </span>
|
|
1901
986
|
<span class="cline-any cline-neutral"> </span>
|
|
1902
|
-
<span class="cline-any cline-
|
|
1903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1905
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1906
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
-
<span class="cline-any cline-yes">76x</span>
|
|
1909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1910
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1911
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1912
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1913
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1922
|
-
<span class="cline-any cline-yes">3x</span>
|
|
1923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1926
|
-
<span class="cline-any cline-yes">73x</span>
|
|
1927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1928
988
|
<span class="cline-any cline-neutral"> </span>
|
|
1929
989
|
<span class="cline-any cline-neutral"> </span>
|
|
1930
990
|
<span class="cline-any cline-neutral"> </span>
|
|
1931
991
|
<span class="cline-any cline-neutral"> </span>
|
|
1932
992
|
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1934
993
|
<span class="cline-any cline-neutral"> </span>
|
|
1935
994
|
<span class="cline-any cline-neutral"> </span>
|
|
1936
995
|
<span class="cline-any cline-neutral"> </span>
|
|
1937
996
|
<span class="cline-any cline-neutral"> </span>
|
|
1938
997
|
<span class="cline-any cline-neutral"> </span>
|
|
1939
998
|
<span class="cline-any cline-neutral"> </span>
|
|
1940
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1941
999
|
<span class="cline-any cline-neutral"> </span>
|
|
1942
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1943
1000
|
<span class="cline-any cline-neutral"> </span>
|
|
1944
1001
|
<span class="cline-any cline-neutral"> </span>
|
|
1945
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1946
1002
|
<span class="cline-any cline-neutral"> </span>
|
|
1947
1003
|
<span class="cline-any cline-neutral"> </span>
|
|
1948
|
-
<span class="cline-any cline-yes">71x</span>
|
|
1949
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1950
1004
|
<span class="cline-any cline-neutral"> </span>
|
|
1951
1005
|
<span class="cline-any cline-neutral"> </span>
|
|
1952
1006
|
<span class="cline-any cline-neutral"> </span>
|
|
1953
1007
|
<span class="cline-any cline-neutral"> </span>
|
|
1954
|
-
<span class="cline-any cline-yes">
|
|
1008
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1009
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1955
1010
|
<span class="cline-any cline-neutral"> </span>
|
|
1956
|
-
<span class="cline-any cline-yes">
|
|
1011
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1957
1012
|
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1958
1014
|
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1959
1016
|
<span class="cline-any cline-neutral"> </span>
|
|
1960
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1961
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1962
1017
|
<span class="cline-any cline-neutral"> </span>
|
|
1963
1018
|
<span class="cline-any cline-neutral"> </span>
|
|
1964
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1965
1019
|
<span class="cline-any cline-neutral"> </span>
|
|
1966
1020
|
<span class="cline-any cline-neutral"> </span>
|
|
1967
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1968
1021
|
<span class="cline-any cline-neutral"> </span>
|
|
1969
1022
|
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
+
<span class="cline-any cline-yes">24x</span>
|
|
1970
1024
|
<span class="cline-any cline-neutral"> </span>
|
|
1971
1025
|
<span class="cline-any cline-neutral"> </span>
|
|
1972
1026
|
<span class="cline-any cline-neutral"> </span>
|
|
1973
1027
|
<span class="cline-any cline-neutral"> </span>
|
|
1974
|
-
<span class="cline-any cline-yes">67x</span>
|
|
1975
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1976
1028
|
<span class="cline-any cline-neutral"> </span>
|
|
1977
1029
|
<span class="cline-any cline-neutral"> </span>
|
|
1978
1030
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1980,659 +1032,67 @@
|
|
|
1980
1032
|
<span class="cline-any cline-neutral"> </span>
|
|
1981
1033
|
<span class="cline-any cline-neutral"> </span>
|
|
1982
1034
|
<span class="cline-any cline-neutral"> </span>
|
|
1983
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1984
1035
|
<span class="cline-any cline-neutral"> </span>
|
|
1985
|
-
<span class="cline-any cline-yes">9x</span>
|
|
1986
1036
|
<span class="cline-any cline-neutral"> </span>
|
|
1987
1037
|
<span class="cline-any cline-neutral"> </span>
|
|
1988
1038
|
<span class="cline-any cline-neutral"> </span>
|
|
1989
|
-
<span class="cline-any cline-yes">58x</span>
|
|
1990
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1991
1039
|
<span class="cline-any cline-neutral"> </span>
|
|
1992
1040
|
<span class="cline-any cline-neutral"> </span>
|
|
1993
1041
|
<span class="cline-any cline-neutral"> </span>
|
|
1994
|
-
<span class="cline-any cline-yes">4x</span>
|
|
1995
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1996
1042
|
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1998
|
-
<span class="cline-any cline-yes">2x</span>
|
|
1999
1043
|
<span class="cline-any cline-neutral"> </span>
|
|
2000
1044
|
<span class="cline-any cline-neutral"> </span>
|
|
2001
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2002
1045
|
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2004
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2005
1046
|
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-yes">23x</span>
|
|
1048
|
+
<span class="cline-any cline-yes">23x</span>
|
|
2006
1049
|
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
+
<span class="cline-any cline-yes">23x</span>
|
|
2007
1051
|
<span class="cline-any cline-yes">3x</span>
|
|
2008
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2010
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2013
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2017
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2026
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2028
1052
|
<span class="cline-any cline-neutral"> </span>
|
|
2029
1053
|
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1055
|
+
<span class="cline-any cline-yes">15x</span>
|
|
2030
1056
|
<span class="cline-any cline-neutral"> </span>
|
|
2031
|
-
<span class="cline-any cline-yes">56x</span>
|
|
2032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
-
<span class="cline-any cline-yes">56x</span>
|
|
2034
1057
|
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
+
<span class="cline-any cline-yes">5x</span>
|
|
2035
1059
|
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-no"> </span>
|
|
2036
1061
|
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
+
<span class="cline-any cline-no"> </span>
|
|
2037
1063
|
<span class="cline-any cline-neutral"> </span>
|
|
2038
1064
|
<span class="cline-any cline-neutral"> </span>
|
|
2039
1065
|
<span class="cline-any cline-neutral"> </span>
|
|
2040
|
-
<span class="cline-any cline-yes">56x</span>
|
|
2041
1066
|
<span class="cline-any cline-neutral"> </span>
|
|
2042
|
-
<span class="cline-any cline-yes">51x</span>
|
|
2043
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2044
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2045
1067
|
<span class="cline-any cline-neutral"> </span>
|
|
2046
1068
|
<span class="cline-any cline-neutral"> </span>
|
|
2047
1069
|
<span class="cline-any cline-neutral"> </span>
|
|
2048
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2049
1070
|
<span class="cline-any cline-yes">1x</span>
|
|
2050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2060
1071
|
<span class="cline-any cline-yes">1x</span>
|
|
2061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2062
1072
|
<span class="cline-any cline-yes">1x</span>
|
|
2063
1073
|
<span class="cline-any cline-neutral"> </span>
|
|
2064
1074
|
<span class="cline-any cline-neutral"> </span>
|
|
2065
1075
|
<span class="cline-any cline-neutral"> </span>
|
|
2066
1076
|
<span class="cline-any cline-yes">1x</span>
|
|
2067
|
-
<span class="cline-any cline-
|
|
2068
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
+
<span class="cline-any cline-no"> </span>
|
|
2072
1078
|
<span class="cline-any cline-neutral"> </span>
|
|
2073
1079
|
<span class="cline-any cline-neutral"> </span>
|
|
2074
1080
|
<span class="cline-any cline-yes">1x</span>
|
|
2075
1081
|
<span class="cline-any cline-neutral"> </span>
|
|
2076
1082
|
<span class="cline-any cline-yes">1x</span>
|
|
2077
1083
|
<span class="cline-any cline-neutral"> </span>
|
|
2078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2080
|
-
<span class="cline-any cline-yes">49x</span>
|
|
2081
1084
|
<span class="cline-any cline-yes">1x</span>
|
|
2082
1085
|
<span class="cline-any cline-neutral"> </span>
|
|
2083
|
-
<span class="cline-any cline-
|
|
2084
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2085
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2086
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2091
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
2092
1087
|
<span class="cline-any cline-neutral"> </span>
|
|
2093
1088
|
<span class="cline-any cline-yes">1x</span>
|
|
2094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2097
|
-
<span class="cline-any cline-yes">48x</span>
|
|
2098
|
-
<span class="cline-any cline-yes">48x</span>
|
|
2099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2108
|
-
<span class="cline-any cline-yes">48x</span>
|
|
2109
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2110
|
-
<span class="cline-any cline-yes">48x</span>
|
|
2111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2114
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2115
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2118
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2123
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2125
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2127
1089
|
<span class="cline-any cline-no"> </span>
|
|
2128
|
-
<span class="cline-any cline-
|
|
2129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2133
|
-
<span class="cline-any cline-no"> </span>
|
|
2134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2135
|
-
<span class="cline-any cline-no"> </span>
|
|
2136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2140
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2141
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
-
<span class="cline-any cline-no"> </span>
|
|
2146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
-
<span class="cline-any cline-no"> </span>
|
|
2148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2149
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2152
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2154
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2157
|
-
<span class="cline-any cline-yes">26x</span>
|
|
2158
|
-
<span class="cline-any cline-yes">26x</span>
|
|
2159
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2160
|
-
<span class="cline-any cline-yes">26x</span>
|
|
2161
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
-
<span class="cline-any cline-yes">26x</span>
|
|
2163
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2168
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2169
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2171
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2172
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2173
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2174
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2175
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2176
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2177
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2178
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2179
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2180
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2181
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2182
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2184
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2185
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2188
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2190
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2191
|
-
<span class="cline-any cline-yes">21x</span>
|
|
2192
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2194
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
+
<span class="cline-any cline-no"> </span>
|
|
2195
1091
|
<span class="cline-any cline-neutral"> </span>
|
|
2196
1092
|
<span class="cline-any cline-neutral"> </span>
|
|
2197
1093
|
<span class="cline-any cline-neutral"> </span>
|
|
2198
1094
|
<span class="cline-any cline-yes">1x</span>
|
|
2199
1095
|
<span class="cline-any cline-neutral"> </span>
|
|
2200
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2201
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2202
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2206
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2208
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2209
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2210
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
-
<span class="cline-any cline-yes">20x</span>
|
|
2212
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2213
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2214
|
-
<span class="cline-any cline-yes">20x</span>
|
|
2215
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2216
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2217
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2218
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2219
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2220
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2221
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2222
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2223
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2226
|
-
<span class="cline-any cline-yes">19x</span>
|
|
2227
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2228
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2230
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2232
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2234
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2237
|
-
<span class="cline-any cline-yes">18x</span>
|
|
2238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2240
|
-
<span class="cline-any cline-yes">18x</span>
|
|
2241
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2242
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2246
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2247
|
-
<span class="cline-any cline-yes">18x</span>
|
|
2248
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2249
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2250
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2251
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2252
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2256
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2257
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2258
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2259
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2260
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2261
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2262
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2263
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2265
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2266
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2267
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2268
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2270
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2271
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2272
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2273
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2274
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2275
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2276
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2277
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2278
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2279
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2281
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2282
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2285
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2286
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2288
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2290
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2292
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2294
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2297
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2299
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2300
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2302
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2303
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2309
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2310
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2311
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2312
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2313
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2315
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2317
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2321
|
-
<span class="cline-any cline-no"> </span>
|
|
2322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2328
|
-
<span class="cline-any cline-no"> </span>
|
|
2329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2330
|
-
<span class="cline-any cline-no"> </span>
|
|
2331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2332
|
-
<span class="cline-any cline-no"> </span>
|
|
2333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2336
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2338
|
-
<span class="cline-any cline-no"> </span>
|
|
2339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2340
|
-
<span class="cline-any cline-no"> </span>
|
|
2341
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2345
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2348
|
-
<span class="cline-any cline-yes">25x</span>
|
|
2349
|
-
<span class="cline-any cline-yes">25x</span>
|
|
2350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2351
|
-
<span class="cline-any cline-yes">25x</span>
|
|
2352
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2354
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2355
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2356
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2358
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2359
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2361
|
-
<span class="cline-any cline-no"> </span>
|
|
2362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2363
|
-
<span class="cline-any cline-no"> </span>
|
|
2364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2371
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2372
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2373
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2377
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2378
|
-
<span class="cline-any cline-no"> </span>
|
|
2379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2381
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2382
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2383
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2384
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2385
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2386
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2387
|
-
<span class="cline-any cline-no"> </span>
|
|
2388
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2389
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2390
|
-
<span class="cline-any cline-no"> </span>
|
|
2391
|
-
<span class="cline-any cline-no"> </span>
|
|
2392
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2393
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2394
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2395
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2396
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2397
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2398
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2400
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2402
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2404
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2406
|
-
<span class="cline-any cline-no"> </span>
|
|
2407
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2408
|
-
<span class="cline-any cline-no"> </span>
|
|
2409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2420
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2421
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2422
|
-
<span class="cline-any cline-yes">28x</span>
|
|
2423
|
-
<span class="cline-any cline-yes">28x</span>
|
|
2424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2425
|
-
<span class="cline-any cline-yes">28x</span>
|
|
2426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2427
|
-
<span class="cline-any cline-yes">28x</span>
|
|
2428
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2433
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2435
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2438
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2439
|
-
<span class="cline-any cline-yes">27x</span>
|
|
2440
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2442
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2443
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2445
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2446
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2453
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2455
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2459
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2461
|
-
<span class="cline-any cline-yes">26x</span>
|
|
2462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2465
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2467
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2469
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2470
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2471
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2478
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2480
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2485
|
-
<span class="cline-any cline-yes">25x</span>
|
|
2486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2488
|
-
<span class="cline-any cline-yes">25x</span>
|
|
2489
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2495
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2497
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2500
|
-
<span class="cline-any cline-yes">24x</span>
|
|
2501
|
-
<span class="cline-any cline-yes">91x</span>
|
|
2502
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2505
|
-
<span class="cline-any cline-yes">24x</span>
|
|
2506
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2509
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2512
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2514
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2516
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2517
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2520
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2523
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2527
|
-
<span class="cline-any cline-yes">23x</span>
|
|
2528
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2533
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2537
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2538
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2540
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2542
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2543
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2544
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2546
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2547
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2550
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2552
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2554
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2556
|
-
<span class="cline-any cline-yes">22x</span>
|
|
2557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2560
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2571
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2572
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2574
|
-
<span class="cline-any cline-yes">2x</span>
|
|
2575
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2576
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2580
|
-
<span class="cline-any cline-yes">20x</span>
|
|
2581
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2582
|
-
<span class="cline-any cline-yes">17x</span>
|
|
2583
|
-
<span class="cline-any cline-yes">16x</span>
|
|
2584
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2586
|
-
<span class="cline-any cline-yes">20x</span>
|
|
2587
|
-
<span class="cline-any cline-yes">38x</span>
|
|
2588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2589
|
-
<span class="cline-any cline-yes">19x</span>
|
|
2590
|
-
<span class="cline-any cline-yes">34x</span>
|
|
2591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2592
|
-
<span class="cline-any cline-yes">19x</span>
|
|
2593
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2594
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2595
|
-
<span class="cline-any cline-yes">12x</span>
|
|
2596
|
-
<span class="cline-any cline-yes">5x</span>
|
|
2597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2603
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2604
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2612
|
-
<span class="cline-any cline-no"> </span>
|
|
2613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2615
|
-
<span class="cline-any cline-yes">7x</span>
|
|
2616
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2628
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2630
|
-
<span class="cline-any cline-yes">4x</span>
|
|
2631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2634
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2635
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2636
1096
|
<span class="cline-any cline-neutral"> </span>
|
|
2637
1097
|
<span class="cline-any cline-neutral"> </span>
|
|
2638
1098
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2640,13 +1100,14 @@
|
|
|
2640
1100
|
<span class="cline-any cline-neutral"> </span>
|
|
2641
1101
|
<span class="cline-any cline-neutral"> </span>
|
|
2642
1102
|
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2643
1104
|
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
+
<span class="cline-any cline-no"> </span>
|
|
2644
1106
|
<span class="cline-any cline-neutral"> </span>
|
|
1107
|
+
<span class="cline-any cline-no"> </span>
|
|
2645
1108
|
<span class="cline-any cline-neutral"> </span>
|
|
2646
1109
|
<span class="cline-any cline-neutral"> </span>
|
|
2647
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2648
1110
|
<span class="cline-any cline-neutral"> </span>
|
|
2649
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2650
1111
|
<span class="cline-any cline-neutral"> </span>
|
|
2651
1112
|
<span class="cline-any cline-neutral"> </span>
|
|
2652
1113
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2654,8 +1115,8 @@
|
|
|
2654
1115
|
<span class="cline-any cline-neutral"> </span>
|
|
2655
1116
|
<span class="cline-any cline-neutral"> </span>
|
|
2656
1117
|
<span class="cline-any cline-neutral"> </span>
|
|
2657
|
-
<span class="cline-any cline-yes">13x</span>
|
|
2658
1118
|
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
+
<span class="cline-any cline-yes">28x</span>
|
|
2659
1120
|
<span class="cline-any cline-neutral"> </span>
|
|
2660
1121
|
<span class="cline-any cline-neutral"> </span>
|
|
2661
1122
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2664,20 +1125,15 @@
|
|
|
2664
1125
|
<span class="cline-any cline-neutral"> </span>
|
|
2665
1126
|
<span class="cline-any cline-neutral"> </span>
|
|
2666
1127
|
<span class="cline-any cline-neutral"> </span>
|
|
2667
|
-
<span class="cline-any cline-yes">13x</span>
|
|
2668
1128
|
<span class="cline-any cline-neutral"> </span>
|
|
2669
|
-
<span class="cline-any cline-yes">13x</span>
|
|
2670
1129
|
<span class="cline-any cline-neutral"> </span>
|
|
2671
|
-
<span class="cline-any cline-no"> </span>
|
|
2672
1130
|
<span class="cline-any cline-neutral"> </span>
|
|
2673
1131
|
<span class="cline-any cline-neutral"> </span>
|
|
2674
1132
|
<span class="cline-any cline-neutral"> </span>
|
|
2675
1133
|
<span class="cline-any cline-neutral"> </span>
|
|
2676
1134
|
<span class="cline-any cline-neutral"> </span>
|
|
2677
1135
|
<span class="cline-any cline-neutral"> </span>
|
|
2678
|
-
<span class="cline-any cline-no"> </span>
|
|
2679
1136
|
<span class="cline-any cline-neutral"> </span>
|
|
2680
|
-
<span class="cline-any cline-no"> </span>
|
|
2681
1137
|
<span class="cline-any cline-neutral"> </span>
|
|
2682
1138
|
<span class="cline-any cline-neutral"> </span>
|
|
2683
1139
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2785,39 +1241,22 @@
|
|
|
2785
1241
|
<span class="cline-any cline-neutral"> </span>
|
|
2786
1242
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
2787
1243
|
Context,
|
|
2788
|
-
AttributeValue,
|
|
2789
|
-
BucketKey,
|
|
2790
|
-
BucketValue,
|
|
2791
1244
|
DatafileContent,
|
|
2792
1245
|
Feature,
|
|
2793
1246
|
FeatureKey,
|
|
2794
1247
|
InitialFeatures,
|
|
2795
|
-
OverrideFeature,
|
|
2796
1248
|
StickyFeatures,
|
|
2797
|
-
Traffic,
|
|
2798
1249
|
VariableType,
|
|
2799
1250
|
VariableValue,
|
|
2800
1251
|
VariationValue,
|
|
2801
|
-
Variation,
|
|
2802
|
-
RuleKey,
|
|
2803
1252
|
VariableKey,
|
|
2804
|
-
VariableSchema,
|
|
2805
|
-
Force,
|
|
2806
|
-
Required,
|
|
2807
1253
|
} from "@featurevisor/types";
|
|
2808
1254
|
|
|
2809
1255
|
import { createLogger, Logger, LogLevel } from "./logger";
|
|
2810
1256
|
import { DatafileReader } from "./datafileReader";
|
|
2811
1257
|
import { Emitter } from "./emitter";
|
|
2812
|
-
import {
|
|
2813
|
-
import {
|
|
2814
|
-
findForceFromFeature,
|
|
2815
|
-
getMatchedTraffic,
|
|
2816
|
-
getMatchedTrafficAndAllocation,
|
|
2817
|
-
parseFromStringifiedSegments,
|
|
2818
|
-
} from "./feature";
|
|
2819
|
-
import { allConditionsAreMatched } from "./conditions";
|
|
2820
|
-
import { allGroupSegmentsAreMatched } from "./segments";
|
|
1258
|
+
import { ConfigureBucketKey, ConfigureBucketValue } from "./bucket";
|
|
1259
|
+
import { Evaluation, evaluate } from "./evaluate";
|
|
2821
1260
|
|
|
2822
1261
|
export type ReadyCallback = () => void;
|
|
2823
1262
|
|
|
@@ -2828,10 +1267,6 @@ export type ActivationCallback = (
|
|
|
2828
1267
|
captureContext: Context,
|
|
2829
1268
|
) => void;
|
|
2830
1269
|
|
|
2831
|
-
export type ConfigureBucketKey = (feature, context, bucketKey: BucketKey) => BucketKey;
|
|
2832
|
-
|
|
2833
|
-
export type ConfigureBucketValue = (feature, context, bucketValue: BucketValue) => BucketValue;
|
|
2834
|
-
|
|
2835
1270
|
export interface Statuses {
|
|
2836
1271
|
ready: boolean;
|
|
2837
1272
|
refreshInProgress: boolean;
|
|
@@ -2869,51 +1304,6 @@ const emptyDatafile: DatafileContent = {
|
|
|
2869
1304
|
|
|
2870
1305
|
export type DatafileFetchHandler = (datafileUrl: string) => Promise<DatafileContent>;
|
|
2871
1306
|
|
|
2872
|
-
export enum EvaluationReason {
|
|
2873
|
-
NOT_FOUND = "not_found",
|
|
2874
|
-
NO_VARIATIONS = "no_variations",
|
|
2875
|
-
NO_MATCH = "no_match",
|
|
2876
|
-
DISABLED = "disabled",
|
|
2877
|
-
REQUIRED = "required",
|
|
2878
|
-
OUT_OF_RANGE = "out_of_range",
|
|
2879
|
-
FORCED = "forced",
|
|
2880
|
-
INITIAL = "initial",
|
|
2881
|
-
STICKY = "sticky",
|
|
2882
|
-
RULE = "rule",
|
|
2883
|
-
ALLOCATED = "allocated",
|
|
2884
|
-
DEFAULTED = "defaulted",
|
|
2885
|
-
OVERRIDE = "override",
|
|
2886
|
-
ERROR = "error",
|
|
2887
|
-
}
|
|
2888
|
-
|
|
2889
|
-
export interface Evaluation {
|
|
2890
|
-
// required
|
|
2891
|
-
featureKey: FeatureKey;
|
|
2892
|
-
reason: EvaluationReason;
|
|
2893
|
-
|
|
2894
|
-
// common
|
|
2895
|
-
bucketKey?: BucketKey;
|
|
2896
|
-
bucketValue?: BucketValue;
|
|
2897
|
-
ruleKey?: RuleKey;
|
|
2898
|
-
error?: Error;
|
|
2899
|
-
enabled?: boolean;
|
|
2900
|
-
traffic?: Traffic;
|
|
2901
|
-
forceIndex?: number;
|
|
2902
|
-
force?: Force;
|
|
2903
|
-
required?: Required[];
|
|
2904
|
-
sticky?: OverrideFeature;
|
|
2905
|
-
initial?: OverrideFeature;
|
|
2906
|
-
|
|
2907
|
-
// variation
|
|
2908
|
-
variation?: Variation;
|
|
2909
|
-
variationValue?: VariationValue;
|
|
2910
|
-
|
|
2911
|
-
// variable
|
|
2912
|
-
variableKey?: VariableKey;
|
|
2913
|
-
variableValue?: VariableValue;
|
|
2914
|
-
variableSchema?: VariableSchema;
|
|
2915
|
-
}
|
|
2916
|
-
|
|
2917
1307
|
function fetchDatafileContent(
|
|
2918
1308
|
datafileUrl,
|
|
2919
1309
|
handleDatafileFetch?: DatafileFetchHandler,
|
|
@@ -3100,87 +1490,10 @@ export class FeaturevisorInstance {
|
|
|
3100
1490
|
return this.datafileReader.getRevision();
|
|
3101
1491
|
}
|
|
3102
1492
|
|
|
3103
|
-
getFeature(featureKey: string | Feature): Feature | undefined {
|
|
3104
|
-
return typeof featureKey === "string"
|
|
1493
|
+
<span class="fstat-no" title="function not covered" > getFeature(</span>featureKey: string | Feature): Feature | undefined {
|
|
1494
|
+
<span class="cstat-no" title="statement not covered" > return typeof featureKey === "string"</span>
|
|
3105
1495
|
? this.datafileReader.getFeature(featureKey) // only key provided
|
|
3106
|
-
:
|
|
3107
|
-
}
|
|
3108
|
-
|
|
3109
|
-
/**
|
|
3110
|
-
* Bucketing
|
|
3111
|
-
*/
|
|
3112
|
-
private getBucketKey(feature: Feature, context: Context): BucketKey {
|
|
3113
|
-
const featureKey = feature.key;
|
|
3114
|
-
|
|
3115
|
-
let type;
|
|
3116
|
-
let attributeKeys;
|
|
3117
|
-
|
|
3118
|
-
if (typeof feature.bucketBy === "string") {
|
|
3119
|
-
type = "plain";
|
|
3120
|
-
attributeKeys = [feature.bucketBy];
|
|
3121
|
-
} else if (Array.isArray(feature.bucketBy)) {
|
|
3122
|
-
type = "and";
|
|
3123
|
-
attributeKeys = feature.bucketBy;
|
|
3124
|
-
} else if (typeof feature.bucketBy === "object" && Array.isArray(feature.bucketBy.or)) {
|
|
3125
|
-
type = "or";
|
|
3126
|
-
attributeKeys = feature.bucketBy.or;
|
|
3127
|
-
} else <span class="missing-if-branch" title="else path not taken" >E</span>{
|
|
3128
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error("invalid bucketBy", { featureKey, bucketBy: feature.bucketBy });</span>
|
|
3129
|
-
|
|
3130
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("invalid bucketBy");</span>
|
|
3131
|
-
}
|
|
3132
|
-
|
|
3133
|
-
const bucketKey: AttributeValue[] = [];
|
|
3134
|
-
|
|
3135
|
-
attributeKeys.forEach((attributeKey) => {
|
|
3136
|
-
const attributeValue = context[attributeKey];
|
|
3137
|
-
|
|
3138
|
-
if (typeof attributeValue === "undefined") {
|
|
3139
|
-
return;
|
|
3140
|
-
}
|
|
3141
|
-
|
|
3142
|
-
if (type === "plain" || type === "and") {
|
|
3143
|
-
bucketKey.push(attributeValue);
|
|
3144
|
-
} else {
|
|
3145
|
-
// or
|
|
3146
|
-
if (bucketKey.length === 0) {
|
|
3147
|
-
bucketKey.push(attributeValue);
|
|
3148
|
-
}
|
|
3149
|
-
}
|
|
3150
|
-
});
|
|
3151
|
-
|
|
3152
|
-
bucketKey.push(featureKey);
|
|
3153
|
-
|
|
3154
|
-
const result = bucketKey.join(this.bucketKeySeparator);
|
|
3155
|
-
|
|
3156
|
-
if (this.configureBucketKey) {
|
|
3157
|
-
return this.configureBucketKey(feature, context, result);
|
|
3158
|
-
}
|
|
3159
|
-
|
|
3160
|
-
return result;
|
|
3161
|
-
}
|
|
3162
|
-
|
|
3163
|
-
private getBucketValue(
|
|
3164
|
-
feature: Feature,
|
|
3165
|
-
context: Context,
|
|
3166
|
-
): { bucketKey: BucketKey; bucketValue: BucketValue } {
|
|
3167
|
-
const bucketKey = this.getBucketKey(feature, context);
|
|
3168
|
-
|
|
3169
|
-
const value = getBucketedNumber(bucketKey);
|
|
3170
|
-
|
|
3171
|
-
if (this.configureBucketValue) {
|
|
3172
|
-
const configuredValue = this.configureBucketValue(feature, context, value);
|
|
3173
|
-
|
|
3174
|
-
return {
|
|
3175
|
-
bucketKey,
|
|
3176
|
-
bucketValue: configuredValue,
|
|
3177
|
-
};
|
|
3178
|
-
}
|
|
3179
|
-
|
|
3180
|
-
return {
|
|
3181
|
-
bucketKey,
|
|
3182
|
-
bucketValue: value,
|
|
3183
|
-
};
|
|
1496
|
+
: featureKey; // full feature provided
|
|
3184
1497
|
}
|
|
3185
1498
|
|
|
3186
1499
|
/**
|
|
@@ -3259,241 +1572,24 @@ export class FeaturevisorInstance {
|
|
|
3259
1572
|
* Flag
|
|
3260
1573
|
*/
|
|
3261
1574
|
evaluateFlag(featureKey: FeatureKey | Feature, context: Context = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: Evaluation {
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
try {
|
|
3265
|
-
const key = typeof featureKey === "string" ? featureKey : <span class="branch-1 cbranch-no" title="branch not covered" >featureKey.key;</span>
|
|
3266
|
-
|
|
3267
|
-
// sticky
|
|
3268
|
-
if (
|
|
3269
|
-
this.stickyFeatures &&
|
|
3270
|
-
this.stickyFeatures[key] &&
|
|
3271
|
-
typeof this.stickyFeatures[key].enabled !== "undefined"
|
|
3272
|
-
) {
|
|
3273
|
-
evaluation = {
|
|
3274
|
-
featureKey: key,
|
|
3275
|
-
reason: EvaluationReason.STICKY,
|
|
3276
|
-
sticky: this.stickyFeatures[key],
|
|
3277
|
-
enabled: this.stickyFeatures[key].enabled,
|
|
3278
|
-
};
|
|
3279
|
-
|
|
3280
|
-
this.logger.debug("using sticky enabled", evaluation);
|
|
3281
|
-
|
|
3282
|
-
return evaluation;
|
|
3283
|
-
}
|
|
3284
|
-
|
|
3285
|
-
// initial
|
|
3286
|
-
if (
|
|
3287
|
-
this.statuses &&
|
|
3288
|
-
!this.statuses.ready &&
|
|
3289
|
-
this.initialFeatures &&
|
|
3290
|
-
this.initialFeatures[key] &&
|
|
3291
|
-
typeof this.initialFeatures[key].enabled !== "undefined"
|
|
3292
|
-
) {
|
|
3293
|
-
evaluation = {
|
|
3294
|
-
featureKey: key,
|
|
3295
|
-
reason: EvaluationReason.INITIAL,
|
|
3296
|
-
initial: this.initialFeatures[key],
|
|
3297
|
-
enabled: this.initialFeatures[key].enabled,
|
|
3298
|
-
};
|
|
3299
|
-
|
|
3300
|
-
this.logger.debug("using initial enabled", evaluation);
|
|
3301
|
-
|
|
3302
|
-
return evaluation;
|
|
3303
|
-
}
|
|
3304
|
-
|
|
3305
|
-
const feature = this.getFeature(featureKey);
|
|
3306
|
-
|
|
3307
|
-
// not found
|
|
3308
|
-
if (!feature) {
|
|
3309
|
-
evaluation = {
|
|
3310
|
-
featureKey: key,
|
|
3311
|
-
reason: EvaluationReason.NOT_FOUND,
|
|
3312
|
-
};
|
|
3313
|
-
|
|
3314
|
-
this.logger.warn("feature not found", evaluation);
|
|
1575
|
+
return evaluate({
|
|
1576
|
+
type: "flag",
|
|
3315
1577
|
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
// deprecated
|
|
3320
|
-
if (feature.deprecated) {
|
|
3321
|
-
this.logger.warn("feature is deprecated", { featureKey: feature.key });
|
|
3322
|
-
}
|
|
3323
|
-
|
|
3324
|
-
const finalContext = this.interceptContext ? this.interceptContext(context) : context;
|
|
3325
|
-
|
|
3326
|
-
// forced
|
|
3327
|
-
const { force, forceIndex } = findForceFromFeature(
|
|
3328
|
-
feature,
|
|
3329
|
-
context,
|
|
3330
|
-
this.datafileReader,
|
|
3331
|
-
this.logger,
|
|
3332
|
-
);
|
|
3333
|
-
|
|
3334
|
-
if (force && typeof force.enabled !== "undefined") {
|
|
3335
|
-
evaluation = {
|
|
3336
|
-
featureKey: feature.key,
|
|
3337
|
-
reason: EvaluationReason.FORCED,
|
|
3338
|
-
forceIndex,
|
|
3339
|
-
force,
|
|
3340
|
-
enabled: force.enabled,
|
|
3341
|
-
};
|
|
3342
|
-
|
|
3343
|
-
this.logger.debug("forced enabled found", evaluation);
|
|
3344
|
-
|
|
3345
|
-
return evaluation;
|
|
3346
|
-
}
|
|
3347
|
-
|
|
3348
|
-
// required
|
|
3349
|
-
if (feature.required && feature.required.length > 0) {
|
|
3350
|
-
const requiredFeaturesAreEnabled = feature.required.every((required) => {
|
|
3351
|
-
let requiredKey;
|
|
3352
|
-
let requiredVariation;
|
|
3353
|
-
|
|
3354
|
-
if (typeof required === "string") {
|
|
3355
|
-
requiredKey = required;
|
|
3356
|
-
} else {
|
|
3357
|
-
requiredKey = required.key;
|
|
3358
|
-
requiredVariation = required.variation;
|
|
3359
|
-
}
|
|
3360
|
-
|
|
3361
|
-
const requiredIsEnabled = this.isEnabled(requiredKey, finalContext);
|
|
3362
|
-
|
|
3363
|
-
if (!requiredIsEnabled) {
|
|
3364
|
-
return false;
|
|
3365
|
-
}
|
|
3366
|
-
|
|
3367
|
-
if (typeof requiredVariation !== "undefined") {
|
|
3368
|
-
const requiredVariationValue = this.getVariation(requiredKey, finalContext);
|
|
3369
|
-
|
|
3370
|
-
return requiredVariationValue === requiredVariation;
|
|
3371
|
-
}
|
|
3372
|
-
|
|
3373
|
-
return true;
|
|
3374
|
-
});
|
|
3375
|
-
|
|
3376
|
-
if (!requiredFeaturesAreEnabled) {
|
|
3377
|
-
evaluation = {
|
|
3378
|
-
featureKey: feature.key,
|
|
3379
|
-
reason: EvaluationReason.REQUIRED,
|
|
3380
|
-
required: feature.required,
|
|
3381
|
-
enabled: requiredFeaturesAreEnabled,
|
|
3382
|
-
};
|
|
3383
|
-
|
|
3384
|
-
this.logger.debug("required features not enabled", evaluation);
|
|
3385
|
-
|
|
3386
|
-
return evaluation;
|
|
3387
|
-
}
|
|
3388
|
-
}
|
|
3389
|
-
|
|
3390
|
-
// bucketing
|
|
3391
|
-
const { bucketKey, bucketValue } = this.getBucketValue(feature, finalContext);
|
|
3392
|
-
|
|
3393
|
-
const matchedTraffic = getMatchedTraffic(
|
|
3394
|
-
feature.traffic,
|
|
3395
|
-
finalContext,
|
|
3396
|
-
this.datafileReader,
|
|
3397
|
-
this.logger,
|
|
3398
|
-
);
|
|
3399
|
-
|
|
3400
|
-
if (matchedTraffic) {
|
|
3401
|
-
// check if mutually exclusive
|
|
3402
|
-
if (feature.ranges && feature.ranges.length > 0) {
|
|
3403
|
-
const matchedRange = feature.ranges.find((range) => {
|
|
3404
|
-
return bucketValue >= range[0] && bucketValue < range[1];
|
|
3405
|
-
});
|
|
3406
|
-
|
|
3407
|
-
// matched
|
|
3408
|
-
if (matchedRange) {
|
|
3409
|
-
evaluation = {
|
|
3410
|
-
featureKey: feature.key,
|
|
3411
|
-
reason: EvaluationReason.ALLOCATED,
|
|
3412
|
-
bucketKey,
|
|
3413
|
-
bucketValue,
|
|
3414
|
-
ruleKey: matchedTraffic.key,
|
|
3415
|
-
traffic: matchedTraffic,
|
|
3416
|
-
enabled:
|
|
3417
|
-
typeof matchedTraffic.enabled === "undefined" ? true : <span class="branch-1 cbranch-no" title="branch not covered" >matchedTraffic.enabled,</span>
|
|
3418
|
-
};
|
|
3419
|
-
|
|
3420
|
-
this.logger.debug("matched", evaluation);
|
|
3421
|
-
|
|
3422
|
-
return evaluation;
|
|
3423
|
-
}
|
|
3424
|
-
|
|
3425
|
-
// no match
|
|
3426
|
-
evaluation = {
|
|
3427
|
-
featureKey: feature.key,
|
|
3428
|
-
reason: EvaluationReason.OUT_OF_RANGE,
|
|
3429
|
-
bucketKey,
|
|
3430
|
-
bucketValue,
|
|
3431
|
-
enabled: false,
|
|
3432
|
-
};
|
|
3433
|
-
|
|
3434
|
-
this.logger.debug("not matched", evaluation);
|
|
3435
|
-
|
|
3436
|
-
return evaluation;
|
|
3437
|
-
}
|
|
3438
|
-
|
|
3439
|
-
// override from rule
|
|
3440
|
-
if (typeof matchedTraffic.enabled !== "undefined") {
|
|
3441
|
-
evaluation = {
|
|
3442
|
-
featureKey: feature.key,
|
|
3443
|
-
reason: EvaluationReason.OVERRIDE,
|
|
3444
|
-
bucketKey,
|
|
3445
|
-
bucketValue,
|
|
3446
|
-
ruleKey: matchedTraffic.key,
|
|
3447
|
-
traffic: matchedTraffic,
|
|
3448
|
-
enabled: matchedTraffic.enabled,
|
|
3449
|
-
};
|
|
3450
|
-
|
|
3451
|
-
this.logger.debug("override from rule", evaluation);
|
|
3452
|
-
|
|
3453
|
-
return evaluation;
|
|
3454
|
-
}
|
|
3455
|
-
|
|
3456
|
-
// treated as enabled because of matched traffic
|
|
3457
|
-
if (bucketValue <= matchedTraffic.percentage) {
|
|
3458
|
-
evaluation = {
|
|
3459
|
-
featureKey: feature.key,
|
|
3460
|
-
reason: EvaluationReason.RULE,
|
|
3461
|
-
bucketKey,
|
|
3462
|
-
bucketValue,
|
|
3463
|
-
ruleKey: matchedTraffic.key,
|
|
3464
|
-
traffic: matchedTraffic,
|
|
3465
|
-
enabled: true,
|
|
3466
|
-
};
|
|
3467
|
-
|
|
3468
|
-
this.logger.debug("matched traffic", evaluation);
|
|
3469
|
-
|
|
3470
|
-
return evaluation;
|
|
3471
|
-
}
|
|
3472
|
-
}
|
|
3473
|
-
|
|
3474
|
-
// nothing matched
|
|
3475
|
-
evaluation = {
|
|
3476
|
-
featureKey: feature.key,
|
|
3477
|
-
reason: EvaluationReason.NO_MATCH,
|
|
3478
|
-
bucketKey,
|
|
3479
|
-
bucketValue,
|
|
3480
|
-
enabled: false,
|
|
3481
|
-
};
|
|
3482
|
-
|
|
3483
|
-
this.logger.debug("nothing matched", evaluation);
|
|
1578
|
+
featureKey,
|
|
1579
|
+
context,
|
|
3484
1580
|
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
reason: EvaluationReason.ERROR,
|
|
3490
|
-
error: e,
|
|
3491
|
-
};
|
|
1581
|
+
logger: this.logger,
|
|
1582
|
+
datafileReader: this.datafileReader,
|
|
1583
|
+
statuses: this.statuses,
|
|
1584
|
+
interceptContext: this.interceptContext,
|
|
3492
1585
|
|
|
3493
|
-
|
|
1586
|
+
stickyFeatures: this.stickyFeatures,
|
|
1587
|
+
initialFeatures: this.initialFeatures,
|
|
3494
1588
|
|
|
3495
|
-
|
|
3496
|
-
|
|
1589
|
+
bucketKeySeparator: this.bucketKeySeparator,
|
|
1590
|
+
configureBucketKey: this.configureBucketKey,
|
|
1591
|
+
configureBucketValue: this.configureBucketValue,
|
|
1592
|
+
});
|
|
3497
1593
|
}
|
|
3498
1594
|
|
|
3499
1595
|
isEnabled(featureKey: FeatureKey | Feature, context: Context = {}): boolean {
|
|
@@ -3512,193 +1608,24 @@ export class FeaturevisorInstance {
|
|
|
3512
1608
|
* Variation
|
|
3513
1609
|
*/
|
|
3514
1610
|
evaluateVariation(featureKey: FeatureKey | Feature, context: Context = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: Evaluation {
|
|
3515
|
-
|
|
3516
|
-
|
|
3517
|
-
try {
|
|
3518
|
-
const key = typeof featureKey === "string" ? featureKey : <span class="branch-1 cbranch-no" title="branch not covered" >featureKey.key;</span>
|
|
3519
|
-
|
|
3520
|
-
const flag = this.evaluateFlag(featureKey, context);
|
|
3521
|
-
|
|
3522
|
-
if (flag.enabled === false) {
|
|
3523
|
-
evaluation = {
|
|
3524
|
-
featureKey: key,
|
|
3525
|
-
reason: EvaluationReason.DISABLED,
|
|
3526
|
-
};
|
|
3527
|
-
|
|
3528
|
-
this.logger.debug("feature is disabled", evaluation);
|
|
3529
|
-
|
|
3530
|
-
return evaluation;
|
|
3531
|
-
}
|
|
3532
|
-
|
|
3533
|
-
// sticky
|
|
3534
|
-
if (this.stickyFeatures && this.stickyFeatures[key]) {
|
|
3535
|
-
const variationValue = this.stickyFeatures[key].variation;
|
|
1611
|
+
return evaluate({
|
|
1612
|
+
type: "variation",
|
|
3536
1613
|
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
featureKey: key,
|
|
3540
|
-
reason: EvaluationReason.STICKY,
|
|
3541
|
-
variationValue,
|
|
3542
|
-
};
|
|
1614
|
+
featureKey,
|
|
1615
|
+
context,
|
|
3543
1616
|
|
|
3544
|
-
|
|
1617
|
+
logger: this.logger,
|
|
1618
|
+
datafileReader: this.datafileReader,
|
|
1619
|
+
statuses: this.statuses,
|
|
1620
|
+
interceptContext: this.interceptContext,
|
|
3545
1621
|
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
}
|
|
3549
|
-
|
|
3550
|
-
// initial
|
|
3551
|
-
if (
|
|
3552
|
-
this.statuses &&
|
|
3553
|
-
!this.statuses.ready &&
|
|
3554
|
-
this.initialFeatures &&
|
|
3555
|
-
this.initialFeatures[key] &&
|
|
3556
|
-
typeof this.initialFeatures[key].variation !== "undefined"
|
|
3557
|
-
) {
|
|
3558
|
-
const variationValue = this.initialFeatures[key].variation;
|
|
3559
|
-
|
|
3560
|
-
evaluation = {
|
|
3561
|
-
featureKey: key,
|
|
3562
|
-
reason: EvaluationReason.INITIAL,
|
|
3563
|
-
variationValue,
|
|
3564
|
-
};
|
|
3565
|
-
|
|
3566
|
-
this.logger.debug("using initial variation", evaluation);
|
|
3567
|
-
|
|
3568
|
-
return evaluation;
|
|
3569
|
-
}
|
|
3570
|
-
|
|
3571
|
-
const feature = this.getFeature(featureKey);
|
|
3572
|
-
|
|
3573
|
-
// not found
|
|
3574
|
-
if (!feature) {
|
|
3575
|
-
evaluation = {
|
|
3576
|
-
featureKey: key,
|
|
3577
|
-
reason: EvaluationReason.NOT_FOUND,
|
|
3578
|
-
};
|
|
3579
|
-
|
|
3580
|
-
this.logger.warn("feature not found", evaluation);
|
|
3581
|
-
|
|
3582
|
-
return evaluation;
|
|
3583
|
-
}
|
|
3584
|
-
|
|
3585
|
-
// no variations
|
|
3586
|
-
if (!feature.variations || feature.variations.length === 0) {
|
|
3587
|
-
evaluation = {
|
|
3588
|
-
featureKey: key,
|
|
3589
|
-
reason: EvaluationReason.NO_VARIATIONS,
|
|
3590
|
-
};
|
|
3591
|
-
|
|
3592
|
-
this.logger.warn("no variations", evaluation);
|
|
3593
|
-
|
|
3594
|
-
return evaluation;
|
|
3595
|
-
}
|
|
3596
|
-
|
|
3597
|
-
const finalContext = this.interceptContext ? this.interceptContext(context) : context;
|
|
3598
|
-
|
|
3599
|
-
// forced
|
|
3600
|
-
const { force, forceIndex } = findForceFromFeature(
|
|
3601
|
-
feature,
|
|
3602
|
-
context,
|
|
3603
|
-
this.datafileReader,
|
|
3604
|
-
this.logger,
|
|
3605
|
-
);
|
|
3606
|
-
|
|
3607
|
-
if (force && force.variation) {
|
|
3608
|
-
const variation = feature.variations.find((v) => v.value === force.variation);
|
|
3609
|
-
|
|
3610
|
-
if (variation) {
|
|
3611
|
-
evaluation = {
|
|
3612
|
-
featureKey: feature.key,
|
|
3613
|
-
reason: EvaluationReason.FORCED,
|
|
3614
|
-
forceIndex,
|
|
3615
|
-
force,
|
|
3616
|
-
variation,
|
|
3617
|
-
};
|
|
3618
|
-
|
|
3619
|
-
this.logger.debug("forced variation found", evaluation);
|
|
3620
|
-
|
|
3621
|
-
return evaluation;
|
|
3622
|
-
}
|
|
3623
|
-
}
|
|
3624
|
-
|
|
3625
|
-
// bucketing
|
|
3626
|
-
const { bucketKey, bucketValue } = this.getBucketValue(feature, finalContext);
|
|
3627
|
-
|
|
3628
|
-
const { matchedTraffic, matchedAllocation } = getMatchedTrafficAndAllocation(
|
|
3629
|
-
feature.traffic,
|
|
3630
|
-
finalContext,
|
|
3631
|
-
bucketValue,
|
|
3632
|
-
this.datafileReader,
|
|
3633
|
-
this.logger,
|
|
3634
|
-
);
|
|
3635
|
-
|
|
3636
|
-
if (matchedTraffic) {
|
|
3637
|
-
// override from rule
|
|
3638
|
-
if (matchedTraffic.variation) {
|
|
3639
|
-
const variation = feature.variations.find((v) => v.value === matchedTraffic.variation);
|
|
3640
|
-
|
|
3641
|
-
if (variation) {
|
|
3642
|
-
evaluation = {
|
|
3643
|
-
featureKey: feature.key,
|
|
3644
|
-
reason: EvaluationReason.RULE,
|
|
3645
|
-
bucketKey,
|
|
3646
|
-
bucketValue,
|
|
3647
|
-
ruleKey: matchedTraffic.key,
|
|
3648
|
-
traffic: matchedTraffic,
|
|
3649
|
-
variation,
|
|
3650
|
-
};
|
|
1622
|
+
stickyFeatures: this.stickyFeatures,
|
|
1623
|
+
initialFeatures: this.initialFeatures,
|
|
3651
1624
|
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
}
|
|
3657
|
-
|
|
3658
|
-
// regular allocation
|
|
3659
|
-
if (matchedAllocation && matchedAllocation.variation) {
|
|
3660
|
-
const variation = feature.variations.find((v) => v.value === matchedAllocation.variation);
|
|
3661
|
-
|
|
3662
|
-
if (variation) {
|
|
3663
|
-
evaluation = {
|
|
3664
|
-
featureKey: feature.key,
|
|
3665
|
-
reason: EvaluationReason.ALLOCATED,
|
|
3666
|
-
bucketKey,
|
|
3667
|
-
bucketValue,
|
|
3668
|
-
ruleKey: matchedTraffic.key,
|
|
3669
|
-
traffic: matchedTraffic,
|
|
3670
|
-
variation,
|
|
3671
|
-
};
|
|
3672
|
-
|
|
3673
|
-
this.logger.debug("allocated variation", evaluation);
|
|
3674
|
-
|
|
3675
|
-
return evaluation;
|
|
3676
|
-
}
|
|
3677
|
-
}
|
|
3678
|
-
}
|
|
3679
|
-
|
|
3680
|
-
// nothing matched
|
|
3681
|
-
<span class="cstat-no" title="statement not covered" > evaluation = {</span>
|
|
3682
|
-
featureKey: feature.key,
|
|
3683
|
-
reason: EvaluationReason.NO_MATCH,
|
|
3684
|
-
bucketKey,
|
|
3685
|
-
bucketValue,
|
|
3686
|
-
};
|
|
3687
|
-
|
|
3688
|
-
<span class="cstat-no" title="statement not covered" > this.logger.debug("no matched variation", evaluation);</span>
|
|
3689
|
-
|
|
3690
|
-
<span class="cstat-no" title="statement not covered" > return evaluation;</span>
|
|
3691
|
-
} catch (e) {
|
|
3692
|
-
<span class="cstat-no" title="statement not covered" > evaluation = {</span>
|
|
3693
|
-
featureKey: typeof featureKey === "string" ? featureKey : featureKey.key,
|
|
3694
|
-
reason: EvaluationReason.ERROR,
|
|
3695
|
-
error: e,
|
|
3696
|
-
};
|
|
3697
|
-
|
|
3698
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error("error", evaluation);</span>
|
|
3699
|
-
|
|
3700
|
-
<span class="cstat-no" title="statement not covered" > return evaluation;</span>
|
|
3701
|
-
}
|
|
1625
|
+
bucketKeySeparator: this.bucketKeySeparator,
|
|
1626
|
+
configureBucketKey: this.configureBucketKey,
|
|
1627
|
+
configureBucketValue: this.configureBucketValue,
|
|
1628
|
+
});
|
|
3702
1629
|
}
|
|
3703
1630
|
|
|
3704
1631
|
getVariation(
|
|
@@ -3777,268 +1704,25 @@ export class FeaturevisorInstance {
|
|
|
3777
1704
|
variableKey: VariableKey,
|
|
3778
1705
|
context: Context = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span>
|
|
3779
1706
|
): Evaluation {
|
|
3780
|
-
|
|
3781
|
-
|
|
3782
|
-
try {
|
|
3783
|
-
const key = typeof featureKey === "string" ? featureKey : <span class="branch-1 cbranch-no" title="branch not covered" >featureKey.key;</span>
|
|
3784
|
-
|
|
3785
|
-
const flag = this.evaluateFlag(featureKey, context);
|
|
3786
|
-
|
|
3787
|
-
if (flag.enabled === false) {
|
|
3788
|
-
evaluation = {
|
|
3789
|
-
featureKey: key,
|
|
3790
|
-
reason: EvaluationReason.DISABLED,
|
|
3791
|
-
};
|
|
3792
|
-
|
|
3793
|
-
this.logger.debug("feature is disabled", evaluation);
|
|
3794
|
-
|
|
3795
|
-
return evaluation;
|
|
3796
|
-
}
|
|
3797
|
-
|
|
3798
|
-
// sticky
|
|
3799
|
-
if (this.stickyFeatures && this.stickyFeatures[key]) {
|
|
3800
|
-
const variables = this.stickyFeatures[key].variables;
|
|
3801
|
-
|
|
3802
|
-
if (variables) {
|
|
3803
|
-
const result = variables[variableKey];
|
|
3804
|
-
|
|
3805
|
-
if (typeof result !== "undefined") {
|
|
3806
|
-
evaluation = {
|
|
3807
|
-
featureKey: key,
|
|
3808
|
-
reason: EvaluationReason.STICKY,
|
|
3809
|
-
variableKey,
|
|
3810
|
-
variableValue: result,
|
|
3811
|
-
};
|
|
1707
|
+
return evaluate({
|
|
1708
|
+
type: "variable",
|
|
3812
1709
|
|
|
3813
|
-
|
|
1710
|
+
featureKey,
|
|
1711
|
+
variableKey,
|
|
1712
|
+
context,
|
|
3814
1713
|
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
// initial
|
|
3821
|
-
if (
|
|
3822
|
-
this.statuses &&
|
|
3823
|
-
!this.statuses.ready &&
|
|
3824
|
-
this.initialFeatures &&
|
|
3825
|
-
this.initialFeatures[key]
|
|
3826
|
-
) {
|
|
3827
|
-
const variables = this.initialFeatures[key].variables;
|
|
3828
|
-
|
|
3829
|
-
if (variables) {
|
|
3830
|
-
if (typeof variables[variableKey] !== "undefined") {
|
|
3831
|
-
evaluation = {
|
|
3832
|
-
featureKey: key,
|
|
3833
|
-
reason: EvaluationReason.INITIAL,
|
|
3834
|
-
variableKey,
|
|
3835
|
-
variableValue: variables[variableKey],
|
|
3836
|
-
};
|
|
3837
|
-
|
|
3838
|
-
this.logger.debug("using initial variable", evaluation);
|
|
3839
|
-
|
|
3840
|
-
return evaluation;
|
|
3841
|
-
}
|
|
3842
|
-
}
|
|
3843
|
-
}
|
|
3844
|
-
|
|
3845
|
-
const feature = this.getFeature(featureKey);
|
|
3846
|
-
|
|
3847
|
-
// not found
|
|
3848
|
-
if (!feature) {
|
|
3849
|
-
evaluation = {
|
|
3850
|
-
featureKey: key,
|
|
3851
|
-
reason: EvaluationReason.NOT_FOUND,
|
|
3852
|
-
variableKey,
|
|
3853
|
-
};
|
|
3854
|
-
|
|
3855
|
-
this.logger.warn("feature not found in datafile", evaluation);
|
|
3856
|
-
|
|
3857
|
-
return evaluation;
|
|
3858
|
-
}
|
|
3859
|
-
|
|
3860
|
-
const variableSchema = Array.isArray(feature.variablesSchema)
|
|
3861
|
-
? feature.variablesSchema.find((v) => v.key === variableKey)
|
|
3862
|
-
: <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
3863
|
-
|
|
3864
|
-
// variable schema not found
|
|
3865
|
-
if (!variableSchema) {
|
|
3866
|
-
evaluation = {
|
|
3867
|
-
featureKey: key,
|
|
3868
|
-
reason: EvaluationReason.NOT_FOUND,
|
|
3869
|
-
variableKey,
|
|
3870
|
-
};
|
|
3871
|
-
|
|
3872
|
-
this.logger.warn("variable schema not found", evaluation);
|
|
3873
|
-
|
|
3874
|
-
return evaluation;
|
|
3875
|
-
}
|
|
3876
|
-
|
|
3877
|
-
const finalContext = this.interceptContext ? <span class="branch-0 cbranch-no" title="branch not covered" >this.interceptContext(context) </span>: context;
|
|
3878
|
-
|
|
3879
|
-
// forced
|
|
3880
|
-
const { force, forceIndex } = findForceFromFeature(
|
|
3881
|
-
feature,
|
|
3882
|
-
context,
|
|
3883
|
-
this.datafileReader,
|
|
3884
|
-
this.logger,
|
|
3885
|
-
);
|
|
3886
|
-
|
|
3887
|
-
if (force && force.variables && typeof force.variables[variableKey] !== "undefined") {
|
|
3888
|
-
evaluation = {
|
|
3889
|
-
featureKey: feature.key,
|
|
3890
|
-
reason: EvaluationReason.FORCED,
|
|
3891
|
-
forceIndex,
|
|
3892
|
-
force,
|
|
3893
|
-
variableKey,
|
|
3894
|
-
variableSchema,
|
|
3895
|
-
variableValue: force.variables[variableKey],
|
|
3896
|
-
};
|
|
3897
|
-
|
|
3898
|
-
this.logger.debug("forced variable", evaluation);
|
|
3899
|
-
|
|
3900
|
-
return evaluation;
|
|
3901
|
-
}
|
|
3902
|
-
|
|
3903
|
-
// bucketing
|
|
3904
|
-
const { bucketKey, bucketValue } = this.getBucketValue(feature, finalContext);
|
|
3905
|
-
|
|
3906
|
-
const { matchedTraffic, matchedAllocation } = getMatchedTrafficAndAllocation(
|
|
3907
|
-
feature.traffic,
|
|
3908
|
-
finalContext,
|
|
3909
|
-
bucketValue,
|
|
3910
|
-
this.datafileReader,
|
|
3911
|
-
this.logger,
|
|
3912
|
-
);
|
|
3913
|
-
|
|
3914
|
-
if (matchedTraffic) {
|
|
3915
|
-
// override from rule
|
|
3916
|
-
if (
|
|
3917
|
-
matchedTraffic.variables &&
|
|
3918
|
-
typeof matchedTraffic.variables[variableKey] !== "undefined"
|
|
3919
|
-
) {
|
|
3920
|
-
evaluation = {
|
|
3921
|
-
featureKey: feature.key,
|
|
3922
|
-
reason: EvaluationReason.RULE,
|
|
3923
|
-
bucketKey,
|
|
3924
|
-
bucketValue,
|
|
3925
|
-
ruleKey: matchedTraffic.key,
|
|
3926
|
-
traffic: matchedTraffic,
|
|
3927
|
-
variableKey,
|
|
3928
|
-
variableSchema,
|
|
3929
|
-
variableValue: matchedTraffic.variables[variableKey],
|
|
3930
|
-
};
|
|
3931
|
-
|
|
3932
|
-
this.logger.debug("override from rule", evaluation);
|
|
3933
|
-
|
|
3934
|
-
return evaluation;
|
|
3935
|
-
}
|
|
3936
|
-
|
|
3937
|
-
// regular allocation
|
|
3938
|
-
let variationValue;
|
|
3939
|
-
|
|
3940
|
-
if (force && force.variation) {
|
|
3941
|
-
variationValue = force.variation;
|
|
3942
|
-
} else if (matchedAllocation && matchedAllocation.variation) {
|
|
3943
|
-
variationValue = matchedAllocation.variation;
|
|
3944
|
-
}
|
|
3945
|
-
|
|
3946
|
-
if (variationValue && Array.isArray(feature.variations)) {
|
|
3947
|
-
const variation = feature.variations.find((v) => v.value === variationValue);
|
|
3948
|
-
|
|
3949
|
-
if (variation && variation.variables) {
|
|
3950
|
-
const variableFromVariation = variation.variables.find((v) => v.key === variableKey);
|
|
3951
|
-
|
|
3952
|
-
if (variableFromVariation) {
|
|
3953
|
-
if (variableFromVariation.overrides) {
|
|
3954
|
-
const override = variableFromVariation.overrides.find((o) => {
|
|
3955
|
-
if (o.conditions) {
|
|
3956
|
-
return allConditionsAreMatched(
|
|
3957
|
-
typeof o.conditions === "string" ? <span class="branch-0 cbranch-no" title="branch not covered" >JSON.parse(o.conditions) </span>: o.conditions,
|
|
3958
|
-
finalContext,
|
|
3959
|
-
this.logger,
|
|
3960
|
-
);
|
|
3961
|
-
}
|
|
3962
|
-
|
|
3963
|
-
if (o.segments) {
|
|
3964
|
-
return allGroupSegmentsAreMatched(
|
|
3965
|
-
parseFromStringifiedSegments(o.segments),
|
|
3966
|
-
finalContext,
|
|
3967
|
-
this.datafileReader,
|
|
3968
|
-
this.logger,
|
|
3969
|
-
);
|
|
3970
|
-
}
|
|
3971
|
-
|
|
3972
|
-
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
3973
|
-
});
|
|
3974
|
-
|
|
3975
|
-
if (override) {
|
|
3976
|
-
evaluation = {
|
|
3977
|
-
featureKey: feature.key,
|
|
3978
|
-
reason: EvaluationReason.OVERRIDE,
|
|
3979
|
-
bucketKey,
|
|
3980
|
-
bucketValue,
|
|
3981
|
-
ruleKey: matchedTraffic.key,
|
|
3982
|
-
traffic: matchedTraffic,
|
|
3983
|
-
variableKey,
|
|
3984
|
-
variableSchema,
|
|
3985
|
-
variableValue: override.value,
|
|
3986
|
-
};
|
|
1714
|
+
logger: this.logger,
|
|
1715
|
+
datafileReader: this.datafileReader,
|
|
1716
|
+
statuses: this.statuses,
|
|
1717
|
+
interceptContext: this.interceptContext,
|
|
3987
1718
|
|
|
3988
|
-
|
|
1719
|
+
stickyFeatures: this.stickyFeatures,
|
|
1720
|
+
initialFeatures: this.initialFeatures,
|
|
3989
1721
|
|
|
3990
|
-
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
if (typeof variableFromVariation.value !== "undefined") {
|
|
3995
|
-
evaluation = {
|
|
3996
|
-
featureKey: feature.key,
|
|
3997
|
-
reason: EvaluationReason.ALLOCATED,
|
|
3998
|
-
bucketKey,
|
|
3999
|
-
bucketValue,
|
|
4000
|
-
ruleKey: matchedTraffic.key,
|
|
4001
|
-
traffic: matchedTraffic,
|
|
4002
|
-
variableKey,
|
|
4003
|
-
variableSchema,
|
|
4004
|
-
variableValue: variableFromVariation.value,
|
|
4005
|
-
};
|
|
4006
|
-
|
|
4007
|
-
this.logger.debug("allocated variable", evaluation);
|
|
4008
|
-
|
|
4009
|
-
return evaluation;
|
|
4010
|
-
}
|
|
4011
|
-
}
|
|
4012
|
-
}
|
|
4013
|
-
}
|
|
4014
|
-
}
|
|
4015
|
-
|
|
4016
|
-
// fall back to default
|
|
4017
|
-
evaluation = {
|
|
4018
|
-
featureKey: feature.key,
|
|
4019
|
-
reason: EvaluationReason.DEFAULTED,
|
|
4020
|
-
bucketKey,
|
|
4021
|
-
bucketValue,
|
|
4022
|
-
variableKey,
|
|
4023
|
-
variableSchema,
|
|
4024
|
-
variableValue: variableSchema.defaultValue,
|
|
4025
|
-
};
|
|
4026
|
-
|
|
4027
|
-
this.logger.debug("using default value", evaluation);
|
|
4028
|
-
|
|
4029
|
-
return evaluation;
|
|
4030
|
-
} catch (e) {
|
|
4031
|
-
<span class="cstat-no" title="statement not covered" > evaluation = {</span>
|
|
4032
|
-
featureKey: typeof featureKey === "string" ? featureKey : featureKey.key,
|
|
4033
|
-
reason: EvaluationReason.ERROR,
|
|
4034
|
-
variableKey,
|
|
4035
|
-
error: e,
|
|
4036
|
-
};
|
|
4037
|
-
|
|
4038
|
-
<span class="cstat-no" title="statement not covered" > this.logger.error("error", evaluation);</span>
|
|
4039
|
-
|
|
4040
|
-
<span class="cstat-no" title="statement not covered" > return evaluation;</span>
|
|
4041
|
-
}
|
|
1722
|
+
bucketKeySeparator: this.bucketKeySeparator,
|
|
1723
|
+
configureBucketKey: this.configureBucketKey,
|
|
1724
|
+
configureBucketValue: this.configureBucketValue,
|
|
1725
|
+
});
|
|
4042
1726
|
}
|
|
4043
1727
|
|
|
4044
1728
|
getVariable(
|
|
@@ -4150,7 +1834,7 @@ export function createInstance(options: InstanceOptions): FeaturevisorInstance {
|
|
|
4150
1834
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
4151
1835
|
Code coverage generated by
|
|
4152
1836
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
4153
|
-
at 2025-
|
|
1837
|
+
at 2025-02-08T22:34:17.181Z
|
|
4154
1838
|
</div>
|
|
4155
1839
|
<script src="prettify.js"></script>
|
|
4156
1840
|
<script>
|