@dotinc/ogre 0.1.1 → 0.1.2
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 +17 -0
- package/package.json +6 -3
- package/.nyc_output/0c5c9631-8352-4e69-aaa3-3f4017e7258b.json +0 -1
- package/.nyc_output/38313068-6ee3-4249-9dd2-4bb60048c9d9.json +0 -1
- package/.nyc_output/3cd63fa9-a980-4574-b2e8-9221ee102838.json +0 -1
- package/.nyc_output/4f1f9f6f-fede-4a1d-ac16-c0c947aa3d19.json +0 -1
- package/.nyc_output/55894817-f661-4178-8eb0-e3eb9bb13f95.json +0 -1
- package/.nyc_output/6075a763-10ff-4db1-a86d-5d989e1a98ac.json +0 -1
- package/.nyc_output/processinfo/0c5c9631-8352-4e69-aaa3-3f4017e7258b.json +0 -1
- package/.nyc_output/processinfo/38313068-6ee3-4249-9dd2-4bb60048c9d9.json +0 -1
- package/.nyc_output/processinfo/3cd63fa9-a980-4574-b2e8-9221ee102838.json +0 -1
- package/.nyc_output/processinfo/4f1f9f6f-fede-4a1d-ac16-c0c947aa3d19.json +0 -1
- package/.nyc_output/processinfo/55894817-f661-4178-8eb0-e3eb9bb13f95.json +0 -1
- package/.nyc_output/processinfo/6075a763-10ff-4db1-a86d-5d989e1a98ac.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/.turbo/turbo-build.log +0 -5
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/commit.ts.html +0 -220
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/hash.ts.html +0 -331
- package/coverage/lcov-report/index.html +0 -176
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/ref.ts.html +0 -115
- package/coverage/lcov-report/repository.ts.html +0 -1648
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/test.utils.ts.html +0 -223
- package/coverage/lcov.info +0 -660
- package/tsconfig.build.json +0 -6
- package/tsconfig.json +0 -16
|
@@ -1,1648 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for repository.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="index.html">All files</a> repository.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">85.31% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>215/252</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">78.33% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>141/180</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">91.42% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>32/35</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">85.41% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>205/240</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
-
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
-
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
-
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
-
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
-
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
-
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
-
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
-
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
-
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
-
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
-
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
-
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
-
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
-
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
-
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
-
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
-
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
-
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
-
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
-
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
-
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
-
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
-
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
-
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
-
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
-
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
-
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
-
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
-
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
-
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
-
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
-
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
-
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
-
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
-
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
-
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
-
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
-
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
-
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
-
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
-
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
-
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
-
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
-
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
-
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
-
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
-
<a name='L406'></a><a href='#L406'>406</a>
|
|
472
|
-
<a name='L407'></a><a href='#L407'>407</a>
|
|
473
|
-
<a name='L408'></a><a href='#L408'>408</a>
|
|
474
|
-
<a name='L409'></a><a href='#L409'>409</a>
|
|
475
|
-
<a name='L410'></a><a href='#L410'>410</a>
|
|
476
|
-
<a name='L411'></a><a href='#L411'>411</a>
|
|
477
|
-
<a name='L412'></a><a href='#L412'>412</a>
|
|
478
|
-
<a name='L413'></a><a href='#L413'>413</a>
|
|
479
|
-
<a name='L414'></a><a href='#L414'>414</a>
|
|
480
|
-
<a name='L415'></a><a href='#L415'>415</a>
|
|
481
|
-
<a name='L416'></a><a href='#L416'>416</a>
|
|
482
|
-
<a name='L417'></a><a href='#L417'>417</a>
|
|
483
|
-
<a name='L418'></a><a href='#L418'>418</a>
|
|
484
|
-
<a name='L419'></a><a href='#L419'>419</a>
|
|
485
|
-
<a name='L420'></a><a href='#L420'>420</a>
|
|
486
|
-
<a name='L421'></a><a href='#L421'>421</a>
|
|
487
|
-
<a name='L422'></a><a href='#L422'>422</a>
|
|
488
|
-
<a name='L423'></a><a href='#L423'>423</a>
|
|
489
|
-
<a name='L424'></a><a href='#L424'>424</a>
|
|
490
|
-
<a name='L425'></a><a href='#L425'>425</a>
|
|
491
|
-
<a name='L426'></a><a href='#L426'>426</a>
|
|
492
|
-
<a name='L427'></a><a href='#L427'>427</a>
|
|
493
|
-
<a name='L428'></a><a href='#L428'>428</a>
|
|
494
|
-
<a name='L429'></a><a href='#L429'>429</a>
|
|
495
|
-
<a name='L430'></a><a href='#L430'>430</a>
|
|
496
|
-
<a name='L431'></a><a href='#L431'>431</a>
|
|
497
|
-
<a name='L432'></a><a href='#L432'>432</a>
|
|
498
|
-
<a name='L433'></a><a href='#L433'>433</a>
|
|
499
|
-
<a name='L434'></a><a href='#L434'>434</a>
|
|
500
|
-
<a name='L435'></a><a href='#L435'>435</a>
|
|
501
|
-
<a name='L436'></a><a href='#L436'>436</a>
|
|
502
|
-
<a name='L437'></a><a href='#L437'>437</a>
|
|
503
|
-
<a name='L438'></a><a href='#L438'>438</a>
|
|
504
|
-
<a name='L439'></a><a href='#L439'>439</a>
|
|
505
|
-
<a name='L440'></a><a href='#L440'>440</a>
|
|
506
|
-
<a name='L441'></a><a href='#L441'>441</a>
|
|
507
|
-
<a name='L442'></a><a href='#L442'>442</a>
|
|
508
|
-
<a name='L443'></a><a href='#L443'>443</a>
|
|
509
|
-
<a name='L444'></a><a href='#L444'>444</a>
|
|
510
|
-
<a name='L445'></a><a href='#L445'>445</a>
|
|
511
|
-
<a name='L446'></a><a href='#L446'>446</a>
|
|
512
|
-
<a name='L447'></a><a href='#L447'>447</a>
|
|
513
|
-
<a name='L448'></a><a href='#L448'>448</a>
|
|
514
|
-
<a name='L449'></a><a href='#L449'>449</a>
|
|
515
|
-
<a name='L450'></a><a href='#L450'>450</a>
|
|
516
|
-
<a name='L451'></a><a href='#L451'>451</a>
|
|
517
|
-
<a name='L452'></a><a href='#L452'>452</a>
|
|
518
|
-
<a name='L453'></a><a href='#L453'>453</a>
|
|
519
|
-
<a name='L454'></a><a href='#L454'>454</a>
|
|
520
|
-
<a name='L455'></a><a href='#L455'>455</a>
|
|
521
|
-
<a name='L456'></a><a href='#L456'>456</a>
|
|
522
|
-
<a name='L457'></a><a href='#L457'>457</a>
|
|
523
|
-
<a name='L458'></a><a href='#L458'>458</a>
|
|
524
|
-
<a name='L459'></a><a href='#L459'>459</a>
|
|
525
|
-
<a name='L460'></a><a href='#L460'>460</a>
|
|
526
|
-
<a name='L461'></a><a href='#L461'>461</a>
|
|
527
|
-
<a name='L462'></a><a href='#L462'>462</a>
|
|
528
|
-
<a name='L463'></a><a href='#L463'>463</a>
|
|
529
|
-
<a name='L464'></a><a href='#L464'>464</a>
|
|
530
|
-
<a name='L465'></a><a href='#L465'>465</a>
|
|
531
|
-
<a name='L466'></a><a href='#L466'>466</a>
|
|
532
|
-
<a name='L467'></a><a href='#L467'>467</a>
|
|
533
|
-
<a name='L468'></a><a href='#L468'>468</a>
|
|
534
|
-
<a name='L469'></a><a href='#L469'>469</a>
|
|
535
|
-
<a name='L470'></a><a href='#L470'>470</a>
|
|
536
|
-
<a name='L471'></a><a href='#L471'>471</a>
|
|
537
|
-
<a name='L472'></a><a href='#L472'>472</a>
|
|
538
|
-
<a name='L473'></a><a href='#L473'>473</a>
|
|
539
|
-
<a name='L474'></a><a href='#L474'>474</a>
|
|
540
|
-
<a name='L475'></a><a href='#L475'>475</a>
|
|
541
|
-
<a name='L476'></a><a href='#L476'>476</a>
|
|
542
|
-
<a name='L477'></a><a href='#L477'>477</a>
|
|
543
|
-
<a name='L478'></a><a href='#L478'>478</a>
|
|
544
|
-
<a name='L479'></a><a href='#L479'>479</a>
|
|
545
|
-
<a name='L480'></a><a href='#L480'>480</a>
|
|
546
|
-
<a name='L481'></a><a href='#L481'>481</a>
|
|
547
|
-
<a name='L482'></a><a href='#L482'>482</a>
|
|
548
|
-
<a name='L483'></a><a href='#L483'>483</a>
|
|
549
|
-
<a name='L484'></a><a href='#L484'>484</a>
|
|
550
|
-
<a name='L485'></a><a href='#L485'>485</a>
|
|
551
|
-
<a name='L486'></a><a href='#L486'>486</a>
|
|
552
|
-
<a name='L487'></a><a href='#L487'>487</a>
|
|
553
|
-
<a name='L488'></a><a href='#L488'>488</a>
|
|
554
|
-
<a name='L489'></a><a href='#L489'>489</a>
|
|
555
|
-
<a name='L490'></a><a href='#L490'>490</a>
|
|
556
|
-
<a name='L491'></a><a href='#L491'>491</a>
|
|
557
|
-
<a name='L492'></a><a href='#L492'>492</a>
|
|
558
|
-
<a name='L493'></a><a href='#L493'>493</a>
|
|
559
|
-
<a name='L494'></a><a href='#L494'>494</a>
|
|
560
|
-
<a name='L495'></a><a href='#L495'>495</a>
|
|
561
|
-
<a name='L496'></a><a href='#L496'>496</a>
|
|
562
|
-
<a name='L497'></a><a href='#L497'>497</a>
|
|
563
|
-
<a name='L498'></a><a href='#L498'>498</a>
|
|
564
|
-
<a name='L499'></a><a href='#L499'>499</a>
|
|
565
|
-
<a name='L500'></a><a href='#L500'>500</a>
|
|
566
|
-
<a name='L501'></a><a href='#L501'>501</a>
|
|
567
|
-
<a name='L502'></a><a href='#L502'>502</a>
|
|
568
|
-
<a name='L503'></a><a href='#L503'>503</a>
|
|
569
|
-
<a name='L504'></a><a href='#L504'>504</a>
|
|
570
|
-
<a name='L505'></a><a href='#L505'>505</a>
|
|
571
|
-
<a name='L506'></a><a href='#L506'>506</a>
|
|
572
|
-
<a name='L507'></a><a href='#L507'>507</a>
|
|
573
|
-
<a name='L508'></a><a href='#L508'>508</a>
|
|
574
|
-
<a name='L509'></a><a href='#L509'>509</a>
|
|
575
|
-
<a name='L510'></a><a href='#L510'>510</a>
|
|
576
|
-
<a name='L511'></a><a href='#L511'>511</a>
|
|
577
|
-
<a name='L512'></a><a href='#L512'>512</a>
|
|
578
|
-
<a name='L513'></a><a href='#L513'>513</a>
|
|
579
|
-
<a name='L514'></a><a href='#L514'>514</a>
|
|
580
|
-
<a name='L515'></a><a href='#L515'>515</a>
|
|
581
|
-
<a name='L516'></a><a href='#L516'>516</a>
|
|
582
|
-
<a name='L517'></a><a href='#L517'>517</a>
|
|
583
|
-
<a name='L518'></a><a href='#L518'>518</a>
|
|
584
|
-
<a name='L519'></a><a href='#L519'>519</a>
|
|
585
|
-
<a name='L520'></a><a href='#L520'>520</a>
|
|
586
|
-
<a name='L521'></a><a href='#L521'>521</a>
|
|
587
|
-
<a name='L522'></a><a href='#L522'>522</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-yes">5x</span>
|
|
589
|
-
<span class="cline-any cline-yes">5x</span>
|
|
590
|
-
<span class="cline-any cline-neutral"> </span>
|
|
591
|
-
<span class="cline-any cline-yes">5x</span>
|
|
592
|
-
<span class="cline-any cline-yes">5x</span>
|
|
593
|
-
<span class="cline-any cline-yes">5x</span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-neutral"> </span>
|
|
601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-neutral"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-neutral"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
631
|
-
<span class="cline-any cline-yes">5x</span>
|
|
632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-yes">32x</span>
|
|
638
|
-
<span class="cline-any cline-yes">32x</span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-yes">32x</span>
|
|
643
|
-
<span class="cline-any cline-yes">32x</span>
|
|
644
|
-
<span class="cline-any cline-yes">32x</span>
|
|
645
|
-
<span class="cline-any cline-yes">32x</span>
|
|
646
|
-
<span class="cline-any cline-yes">32x</span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-yes">15x</span>
|
|
649
|
-
<span class="cline-any cline-yes">15x</span>
|
|
650
|
-
<span class="cline-any cline-yes">12x</span>
|
|
651
|
-
<span class="cline-any cline-yes">12x</span>
|
|
652
|
-
<span class="cline-any cline-yes">12x</span>
|
|
653
|
-
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-neutral"> </span>
|
|
657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
659
|
-
<span class="cline-any cline-yes">107x</span>
|
|
660
|
-
<span class="cline-any cline-neutral"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-yes">107x</span>
|
|
666
|
-
<span class="cline-any cline-yes">107x</span>
|
|
667
|
-
<span class="cline-any cline-yes">67x</span>
|
|
668
|
-
<span class="cline-any cline-yes">67x</span>
|
|
669
|
-
<span class="cline-any cline-yes">67x</span>
|
|
670
|
-
<span class="cline-any cline-yes">67x</span>
|
|
671
|
-
<span class="cline-any cline-yes">67x</span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-yes">8x</span>
|
|
674
|
-
<span class="cline-any cline-yes">67x</span>
|
|
675
|
-
<span class="cline-any cline-yes">67x</span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-yes">67x</span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">67x</span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-yes">67x</span>
|
|
693
|
-
<span class="cline-any cline-yes">67x</span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-yes">107x</span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-yes">107x</span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-yes">48x</span>
|
|
707
|
-
<span class="cline-any cline-yes">48x</span>
|
|
708
|
-
<span class="cline-any cline-yes">48x</span>
|
|
709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-yes">48x</span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-yes">48x</span>
|
|
717
|
-
<span class="cline-any cline-yes">3x</span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-yes">48x</span>
|
|
721
|
-
<span class="cline-any cline-yes">9x</span>
|
|
722
|
-
<span class="cline-any cline-yes">3x</span>
|
|
723
|
-
<span class="cline-any cline-yes">3x</span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-yes">6x</span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-neutral"> </span>
|
|
728
|
-
<span class="cline-any cline-neutral"> </span>
|
|
729
|
-
<span class="cline-any cline-yes">48x</span>
|
|
730
|
-
<span class="cline-any cline-yes">48x</span>
|
|
731
|
-
<span class="cline-any cline-yes">48x</span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-neutral"> </span>
|
|
734
|
-
<span class="cline-any cline-yes">32x</span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-yes">32x</span>
|
|
738
|
-
<span class="cline-any cline-yes">55x</span>
|
|
739
|
-
<span class="cline-any cline-yes">55x</span>
|
|
740
|
-
<span class="cline-any cline-no"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-yes">55x</span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-yes">32x</span>
|
|
745
|
-
<span class="cline-any cline-yes">17x</span>
|
|
746
|
-
<span class="cline-any cline-yes">17x</span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-yes">32x</span>
|
|
749
|
-
<span class="cline-any cline-yes">10x</span>
|
|
750
|
-
<span class="cline-any cline-yes">10x</span>
|
|
751
|
-
<span class="cline-any cline-no"> </span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-yes">10x</span>
|
|
755
|
-
<span class="cline-any cline-yes">6x</span>
|
|
756
|
-
<span class="cline-any cline-yes">6x</span>
|
|
757
|
-
<span class="cline-any cline-yes">4x</span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-yes">6x</span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span>
|
|
763
|
-
<span class="cline-any cline-neutral"> </span>
|
|
764
|
-
<span class="cline-any cline-neutral"> </span>
|
|
765
|
-
<span class="cline-any cline-yes">32x</span>
|
|
766
|
-
<span class="cline-any cline-yes">13x</span>
|
|
767
|
-
<span class="cline-any cline-yes">13x</span>
|
|
768
|
-
<span class="cline-any cline-yes">3x</span>
|
|
769
|
-
<span class="cline-any cline-neutral"> </span>
|
|
770
|
-
<span class="cline-any cline-neutral"> </span>
|
|
771
|
-
<span class="cline-any cline-yes">10x</span>
|
|
772
|
-
<span class="cline-any cline-yes">10x</span>
|
|
773
|
-
<span class="cline-any cline-yes">10x</span>
|
|
774
|
-
<span class="cline-any cline-yes">14x</span>
|
|
775
|
-
<span class="cline-any cline-yes">20x</span>
|
|
776
|
-
<span class="cline-any cline-neutral"> </span>
|
|
777
|
-
<span class="cline-any cline-yes">10x</span>
|
|
778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-yes">32x</span>
|
|
780
|
-
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-yes">11x</span>
|
|
782
|
-
<span class="cline-any cline-yes">11x</span>
|
|
783
|
-
<span class="cline-any cline-neutral"> </span>
|
|
784
|
-
<span class="cline-any cline-neutral"> </span>
|
|
785
|
-
<span class="cline-any cline-yes">11x</span>
|
|
786
|
-
<span class="cline-any cline-yes">11x</span>
|
|
787
|
-
<span class="cline-any cline-neutral"> </span>
|
|
788
|
-
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-yes">11x</span>
|
|
790
|
-
<span class="cline-any cline-neutral"> </span>
|
|
791
|
-
<span class="cline-any cline-yes">32x</span>
|
|
792
|
-
<span class="cline-any cline-no"> </span>
|
|
793
|
-
<span class="cline-any cline-no"> </span>
|
|
794
|
-
<span class="cline-any cline-no"> </span>
|
|
795
|
-
<span class="cline-any cline-no"> </span>
|
|
796
|
-
<span class="cline-any cline-no"> </span>
|
|
797
|
-
<span class="cline-any cline-no"> </span>
|
|
798
|
-
<span class="cline-any cline-no"> </span>
|
|
799
|
-
<span class="cline-any cline-no"> </span>
|
|
800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
801
|
-
<span class="cline-any cline-no"> </span>
|
|
802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
803
|
-
<span class="cline-any cline-neutral"> </span>
|
|
804
|
-
<span class="cline-any cline-neutral"> </span>
|
|
805
|
-
<span class="cline-any cline-yes">32x</span>
|
|
806
|
-
<span class="cline-any cline-neutral"> </span>
|
|
807
|
-
<span class="cline-any cline-yes">13x</span>
|
|
808
|
-
<span class="cline-any cline-neutral"> </span>
|
|
809
|
-
<span class="cline-any cline-neutral"> </span>
|
|
810
|
-
<span class="cline-any cline-neutral"> </span>
|
|
811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
814
|
-
<span class="cline-any cline-yes">32x</span>
|
|
815
|
-
<span class="cline-any cline-yes">98x</span>
|
|
816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
817
|
-
<span class="cline-any cline-yes">32x</span>
|
|
818
|
-
<span class="cline-any cline-yes">2x</span>
|
|
819
|
-
<span class="cline-any cline-yes">2x</span>
|
|
820
|
-
<span class="cline-any cline-no"> </span>
|
|
821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
822
|
-
<span class="cline-any cline-yes">2x</span>
|
|
823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
826
|
-
<span class="cline-any cline-yes">32x</span>
|
|
827
|
-
<span class="cline-any cline-yes">37x</span>
|
|
828
|
-
<span class="cline-any cline-yes">37x</span>
|
|
829
|
-
<span class="cline-any cline-yes">1x</span>
|
|
830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
831
|
-
<span class="cline-any cline-yes">36x</span>
|
|
832
|
-
<span class="cline-any cline-yes">13x</span>
|
|
833
|
-
<span class="cline-any cline-yes">3x</span>
|
|
834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
836
|
-
<span class="cline-any cline-yes">36x</span>
|
|
837
|
-
<span class="cline-any cline-yes">36x</span>
|
|
838
|
-
<span class="cline-any cline-yes">2x</span>
|
|
839
|
-
<span class="cline-any cline-neutral"> </span>
|
|
840
|
-
<span class="cline-any cline-neutral"> </span>
|
|
841
|
-
<span class="cline-any cline-yes">34x</span>
|
|
842
|
-
<span class="cline-any cline-yes">34x</span>
|
|
843
|
-
<span class="cline-any cline-yes">34x</span>
|
|
844
|
-
<span class="cline-any cline-neutral"> </span>
|
|
845
|
-
<span class="cline-any cline-neutral"> </span>
|
|
846
|
-
<span class="cline-any cline-neutral"> </span>
|
|
847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
848
|
-
<span class="cline-any cline-neutral"> </span>
|
|
849
|
-
<span class="cline-any cline-neutral"> </span>
|
|
850
|
-
<span class="cline-any cline-neutral"> </span>
|
|
851
|
-
<span class="cline-any cline-yes">34x</span>
|
|
852
|
-
<span class="cline-any cline-neutral"> </span>
|
|
853
|
-
<span class="cline-any cline-neutral"> </span>
|
|
854
|
-
<span class="cline-any cline-neutral"> </span>
|
|
855
|
-
<span class="cline-any cline-neutral"> </span>
|
|
856
|
-
<span class="cline-any cline-neutral"> </span>
|
|
857
|
-
<span class="cline-any cline-neutral"> </span>
|
|
858
|
-
<span class="cline-any cline-neutral"> </span>
|
|
859
|
-
<span class="cline-any cline-neutral"> </span>
|
|
860
|
-
<span class="cline-any cline-yes">34x</span>
|
|
861
|
-
<span class="cline-any cline-yes">4x</span>
|
|
862
|
-
<span class="cline-any cline-yes">3x</span>
|
|
863
|
-
<span class="cline-any cline-neutral"> </span>
|
|
864
|
-
<span class="cline-any cline-yes">34x</span>
|
|
865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
866
|
-
<span class="cline-any cline-yes">34x</span>
|
|
867
|
-
<span class="cline-any cline-yes">34x</span>
|
|
868
|
-
<span class="cline-any cline-neutral"> </span>
|
|
869
|
-
<span class="cline-any cline-yes">31x</span>
|
|
870
|
-
<span class="cline-any cline-neutral"> </span>
|
|
871
|
-
<span class="cline-any cline-neutral"> </span>
|
|
872
|
-
<span class="cline-any cline-yes">3x</span>
|
|
873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
874
|
-
<span class="cline-any cline-neutral"> </span>
|
|
875
|
-
<span class="cline-any cline-yes">34x</span>
|
|
876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
879
|
-
<span class="cline-any cline-yes">32x</span>
|
|
880
|
-
<span class="cline-any cline-yes">16x</span>
|
|
881
|
-
<span class="cline-any cline-yes">6x</span>
|
|
882
|
-
<span class="cline-any cline-yes">6x</span>
|
|
883
|
-
<span class="cline-any cline-yes">6x</span>
|
|
884
|
-
<span class="cline-any cline-yes">6x</span>
|
|
885
|
-
<span class="cline-any cline-yes">2x</span>
|
|
886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
887
|
-
<span class="cline-any cline-yes">6x</span>
|
|
888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
889
|
-
<span class="cline-any cline-yes">10x</span>
|
|
890
|
-
<span class="cline-any cline-yes">9x</span>
|
|
891
|
-
<span class="cline-any cline-yes">9x</span>
|
|
892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
894
|
-
<span class="cline-any cline-yes">32x</span>
|
|
895
|
-
<span class="cline-any cline-yes">11x</span>
|
|
896
|
-
<span class="cline-any cline-yes">8x</span>
|
|
897
|
-
<span class="cline-any cline-yes">8x</span>
|
|
898
|
-
<span class="cline-any cline-yes">8x</span>
|
|
899
|
-
<span class="cline-any cline-yes">1x</span>
|
|
900
|
-
<span class="cline-any cline-yes">1x</span>
|
|
901
|
-
<span class="cline-any cline-no"> </span>
|
|
902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
903
|
-
<span class="cline-any cline-yes">1x</span>
|
|
904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
905
|
-
<span class="cline-any cline-yes">7x</span>
|
|
906
|
-
<span class="cline-any cline-yes">7x</span>
|
|
907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
908
|
-
<span class="cline-any cline-yes">32x</span>
|
|
909
|
-
<span class="cline-any cline-yes">52x</span>
|
|
910
|
-
<span class="cline-any cline-yes">52x</span>
|
|
911
|
-
<span class="cline-any cline-yes">52x</span>
|
|
912
|
-
<span class="cline-any cline-yes">24x</span>
|
|
913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
914
|
-
<span class="cline-any cline-yes">28x</span>
|
|
915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
916
|
-
<span class="cline-any cline-yes">52x</span>
|
|
917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
918
|
-
<span class="cline-any cline-yes">32x</span>
|
|
919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
925
|
-
<span class="cline-any cline-yes">2x</span>
|
|
926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
927
|
-
<span class="cline-any cline-no"> </span>
|
|
928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
930
|
-
<span class="cline-any cline-yes">2x</span>
|
|
931
|
-
<span class="cline-any cline-yes">2x</span>
|
|
932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
937
|
-
<span class="cline-any cline-yes">2x</span>
|
|
938
|
-
<span class="cline-any cline-yes">1x</span>
|
|
939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
943
|
-
<span class="cline-any cline-neutral"> </span>
|
|
944
|
-
<span class="cline-any cline-neutral"> </span>
|
|
945
|
-
<span class="cline-any cline-neutral"> </span>
|
|
946
|
-
<span class="cline-any cline-neutral"> </span>
|
|
947
|
-
<span class="cline-any cline-neutral"> </span>
|
|
948
|
-
<span class="cline-any cline-neutral"> </span>
|
|
949
|
-
<span class="cline-any cline-yes">1x</span>
|
|
950
|
-
<span class="cline-any cline-yes">1x</span>
|
|
951
|
-
<span class="cline-any cline-yes">1x</span>
|
|
952
|
-
<span class="cline-any cline-yes">1x</span>
|
|
953
|
-
<span class="cline-any cline-yes">1x</span>
|
|
954
|
-
<span class="cline-any cline-neutral"> </span>
|
|
955
|
-
<span class="cline-any cline-neutral"> </span>
|
|
956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
958
|
-
<span class="cline-any cline-neutral"> </span>
|
|
959
|
-
<span class="cline-any cline-neutral"> </span>
|
|
960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
961
|
-
<span class="cline-any cline-neutral"> </span>
|
|
962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
966
|
-
<span class="cline-any cline-neutral"> </span>
|
|
967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
969
|
-
<span class="cline-any cline-no"> </span>
|
|
970
|
-
<span class="cline-any cline-neutral"> </span>
|
|
971
|
-
<span class="cline-any cline-neutral"> </span>
|
|
972
|
-
<span class="cline-any cline-neutral"> </span>
|
|
973
|
-
<span class="cline-any cline-neutral"> </span>
|
|
974
|
-
<span class="cline-any cline-yes">32x</span>
|
|
975
|
-
<span class="cline-any cline-yes">32x</span>
|
|
976
|
-
<span class="cline-any cline-yes">1x</span>
|
|
977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
979
|
-
<span class="cline-any cline-neutral"> </span>
|
|
980
|
-
<span class="cline-any cline-yes">29x</span>
|
|
981
|
-
<span class="cline-any cline-yes">167x</span>
|
|
982
|
-
<span class="cline-any cline-yes">5x</span>
|
|
983
|
-
<span class="cline-any cline-yes">14x</span>
|
|
984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
985
|
-
<span class="cline-any cline-yes">5x</span>
|
|
986
|
-
<span class="cline-any cline-yes">17x</span>
|
|
987
|
-
<span class="cline-any cline-yes">3x</span>
|
|
988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
996
|
-
<span class="cline-any cline-yes">5x</span>
|
|
997
|
-
<span class="cline-any cline-yes">11x</span>
|
|
998
|
-
<span class="cline-any cline-yes">11x</span>
|
|
999
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1000
|
-
<span class="cline-any cline-yes">13x</span>
|
|
1001
|
-
<span class="cline-any cline-yes">20x</span>
|
|
1002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1007
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1008
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1009
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1010
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1011
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1014
|
-
<span class="cline-any cline-no"> </span>
|
|
1015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1023
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1024
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1025
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1026
|
-
<span class="cline-any cline-no"> </span>
|
|
1027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1029
|
-
<span class="cline-any cline-yes">98x</span>
|
|
1030
|
-
<span class="cline-any cline-yes">92x</span>
|
|
1031
|
-
<span class="cline-any cline-yes">92x</span>
|
|
1032
|
-
<span class="cline-any cline-yes">92x</span>
|
|
1033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
-
<span class="cline-any cline-yes">63x</span>
|
|
1035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1036
|
-
<span class="cline-any cline-yes">29x</span>
|
|
1037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1038
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1041
|
-
<span class="cline-any cline-yes">43x</span>
|
|
1042
|
-
<span class="cline-any cline-yes">35x</span>
|
|
1043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1045
|
-
<span class="cline-any cline-no"> </span>
|
|
1046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1055
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1056
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1057
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
-
<span class="cline-any cline-yes">30x</span>
|
|
1063
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1064
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1065
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1066
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1067
|
-
<span class="cline-any cline-no"> </span>
|
|
1068
|
-
<span class="cline-any cline-no"> </span>
|
|
1069
|
-
<span class="cline-any cline-no"> </span>
|
|
1070
|
-
<span class="cline-any cline-no"> </span>
|
|
1071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
-
<span class="cline-any cline-no"> </span>
|
|
1073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
-
<span class="cline-any cline-yes">6x</span>
|
|
1075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
-
<span class="cline-any cline-yes">18x</span>
|
|
1079
|
-
<span class="cline-any cline-yes">12x</span>
|
|
1080
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1081
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1084
|
-
<span class="cline-any cline-no"> </span>
|
|
1085
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1086
|
-
<span class="cline-any cline-yes">11x</span>
|
|
1087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
-
<span class="cline-any cline-yes">5x</span>
|
|
1094
|
-
<span class="cline-any cline-no"> </span>
|
|
1095
|
-
<span class="cline-any cline-no"> </span>
|
|
1096
|
-
<span class="cline-any cline-no"> </span>
|
|
1097
|
-
<span class="cline-any cline-no"> </span>
|
|
1098
|
-
<span class="cline-any cline-no"> </span>
|
|
1099
|
-
<span class="cline-any cline-no"> </span>
|
|
1100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1101
|
-
<span class="cline-any cline-no"> </span>
|
|
1102
|
-
<span class="cline-any cline-no"> </span>
|
|
1103
|
-
<span class="cline-any cline-no"> </span>
|
|
1104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1106
|
-
<span class="cline-any cline-no"> </span>
|
|
1107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1108
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { Change, History, Reference } from './interfaces'
|
|
1109
|
-
import { calculateHash, Commit } from './commit'
|
|
1110
|
-
import { validBranch } from './ref'
|
|
1111
|
-
|
|
1112
|
-
const REFS_HEAD = 'HEAD'
|
|
1113
|
-
const REFS_MAIN = 'refs/heads/main'
|
|
1114
|
-
const refPrefix = 'ref: '
|
|
1115
|
-
|
|
1116
|
-
export interface RepositoryOptions<T> {
|
|
1117
|
-
history?: History
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
export interface RepositoryObject<T> {
|
|
1121
|
-
data: T
|
|
1122
|
-
|
|
1123
|
-
getHistory(): History
|
|
1124
|
-
|
|
1125
|
-
// It returns the reference where we are currently at
|
|
1126
|
-
head(): string
|
|
1127
|
-
|
|
1128
|
-
// Returns the commit hash to which a reference points
|
|
1129
|
-
ref(reference: string): string | undefined
|
|
1130
|
-
|
|
1131
|
-
commit(message: string, author: string, amend?: boolean): Promise<string>
|
|
1132
|
-
|
|
1133
|
-
checkout(shaish: string, createBranch?: boolean): void
|
|
1134
|
-
|
|
1135
|
-
logs(commits?: number): Commit[]
|
|
1136
|
-
|
|
1137
|
-
createBranch(name: string): string
|
|
1138
|
-
|
|
1139
|
-
merge(source: string | RepositoryObject<T> | History): string
|
|
1140
|
-
|
|
1141
|
-
branch(): string
|
|
1142
|
-
|
|
1143
|
-
}
|
|
1144
|
-
|
|
1145
|
-
export interface RespositoryObjectType {
|
|
1146
|
-
new<T>(obj: T, options: RepositoryOptions<T>): RepositoryObject<T>
|
|
1147
|
-
}
|
|
1148
|
-
|
|
1149
|
-
/**
|
|
1150
|
-
* A repository recording and managing the state transitions of an object
|
|
1151
|
-
*/
|
|
1152
|
-
export const Repository = function <T extends { [k: PropertyKey]: any }>(
|
|
1153
|
-
this: RepositoryObject<T>,
|
|
1154
|
-
obj: T,
|
|
1155
|
-
options: RepositoryOptions<T>
|
|
1156
|
-
) {
|
|
1157
|
-
let savedLength: number | undefined
|
|
1158
|
-
let version = 0
|
|
1159
|
-
const refs: Map<string, Reference> = options.history?.refs ?? new Map<string, Reference>([[REFS_HEAD, {
|
|
1160
|
-
name: REFS_HEAD,
|
|
1161
|
-
value: `ref: ${REFS_MAIN}`
|
|
1162
|
-
}]])
|
|
1163
|
-
const changeLog: Change[] = []
|
|
1164
|
-
const targets: any[] = []
|
|
1165
|
-
const commits: Commit[] = options.history?.commits ?? []
|
|
1166
|
-
const hash: Map<T, any[]> = new Map([[obj, []]])
|
|
1167
|
-
const handler = {
|
|
1168
|
-
get: function(target: T, property: PropertyKey): any {
|
|
1169
|
-
const x = target[property]
|
|
1170
|
-
if (Object(x) !== x) return x
|
|
1171
|
-
const arr = hash.get(target) ?? <span class="branch-1 cbranch-no" title="branch not covered" >[]</span>
|
|
1172
|
-
hash.set(x, [...arr, property])
|
|
1173
|
-
return new Proxy(x, handler)
|
|
1174
|
-
},
|
|
1175
|
-
set: update,
|
|
1176
|
-
deleteProperty: update
|
|
1177
|
-
}
|
|
1178
|
-
|
|
1179
|
-
function gotoVersion(newVersion: number) {
|
|
1180
|
-
newVersion = Math.max(0, Math.min(changeLog.length, newVersion))
|
|
1181
|
-
let chg
|
|
1182
|
-
let target
|
|
1183
|
-
let path
|
|
1184
|
-
let property
|
|
1185
|
-
|
|
1186
|
-
const val = newVersion > version ? 'newValue' : 'oldValue'
|
|
1187
|
-
while (version !== newVersion) {
|
|
1188
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (version > newVersion) <span class="cstat-no" title="statement not covered" >version--</span>
|
|
1189
|
-
chg = changeLog[version]
|
|
1190
|
-
path = [...chg.path]
|
|
1191
|
-
property = path.pop()
|
|
1192
|
-
target =
|
|
1193
|
-
targets[version] ||
|
|
1194
|
-
(targets[version] = path.reduce((o, p) => o[p], obj))
|
|
1195
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (chg.hasOwnProperty(val)) {
|
|
1196
|
-
const oldValue = chg[val]
|
|
1197
|
-
// Some additional care concerning the length property of arrays:
|
|
1198
|
-
// @nadilas workaround: array trim to empty array should not set 0:undefined
|
|
1199
|
-
// console.log('warn: not setting array[0]=undefined', target, property, oldValue)
|
|
1200
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (
|
|
1201
|
-
!(
|
|
1202
|
-
Array.isArray(target) &&
|
|
1203
|
-
target.length === 0 &&
|
|
1204
|
-
oldValue === undefined
|
|
1205
|
-
)
|
|
1206
|
-
) {
|
|
1207
|
-
target[property] = oldValue
|
|
1208
|
-
}
|
|
1209
|
-
} else {
|
|
1210
|
-
<span class="cstat-no" title="statement not covered" > delete target[property]</span>
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1213
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (version < newVersion) {
|
|
1214
|
-
version++
|
|
1215
|
-
}
|
|
1216
|
-
}
|
|
1217
|
-
|
|
1218
|
-
return true
|
|
1219
|
-
}
|
|
1220
|
-
|
|
1221
|
-
function gotoLastVersion() {
|
|
1222
|
-
return gotoVersion(changeLog.length)
|
|
1223
|
-
}
|
|
1224
|
-
|
|
1225
|
-
function update(target: T, property: PropertyKey, value?: any) {
|
|
1226
|
-
// only last version can be modified
|
|
1227
|
-
gotoLastVersion()
|
|
1228
|
-
const changes = hash.get(target) ?? <span class="branch-1 cbranch-no" title="branch not covered" >[]</span>
|
|
1229
|
-
const change: Change = {
|
|
1230
|
-
path: [...changes, property],
|
|
1231
|
-
newValue: undefined,
|
|
1232
|
-
oldValue: undefined
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (arguments.length > 2) change.newValue = value
|
|
1236
|
-
// Some care concerning the length property of arrays:
|
|
1237
|
-
if (Array.isArray(target) && Number(property) >= target.length) {
|
|
1238
|
-
savedLength = target.length
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
|
-
if (property in target) {
|
|
1242
|
-
if (property === 'length' && savedLength !== undefined) {
|
|
1243
|
-
change.oldValue = savedLength
|
|
1244
|
-
savedLength = undefined
|
|
1245
|
-
} else {
|
|
1246
|
-
change.oldValue = target[property]
|
|
1247
|
-
}
|
|
1248
|
-
}
|
|
1249
|
-
|
|
1250
|
-
changeLog.push(change)
|
|
1251
|
-
targets.push(target)
|
|
1252
|
-
return gotoLastVersion()
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
this.data = new Proxy(obj, handler)
|
|
1256
|
-
|
|
1257
|
-
// region Read state read
|
|
1258
|
-
this.head = () => {
|
|
1259
|
-
const ref = refs.get(REFS_HEAD)
|
|
1260
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!ref) {
|
|
1261
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`unreachable: HEAD is not present`)</span>
|
|
1262
|
-
}
|
|
1263
|
-
return cleanRefValue(ref.value)
|
|
1264
|
-
}
|
|
1265
|
-
this.ref = (reference) => {
|
|
1266
|
-
const ref = refs.get(reference)?.value
|
|
1267
|
-
return ref ? cleanRefValue(ref) : undefined
|
|
1268
|
-
}
|
|
1269
|
-
this.branch = () => {
|
|
1270
|
-
const currentHeadRef = refs.get(REFS_HEAD)
|
|
1271
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!currentHeadRef) {
|
|
1272
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('unreachable: ref HEAD not available')</span>
|
|
1273
|
-
}
|
|
1274
|
-
|
|
1275
|
-
if (currentHeadRef.value.includes(refPrefix)) {
|
|
1276
|
-
const refName = cleanRefValue(currentHeadRef.value)
|
|
1277
|
-
if (refs.has(refName))
|
|
1278
|
-
return getLastItem(refName)
|
|
1279
|
-
}
|
|
1280
|
-
|
|
1281
|
-
return REFS_HEAD // detached state
|
|
1282
|
-
}
|
|
1283
|
-
// endregion
|
|
1284
|
-
|
|
1285
|
-
// region History functions
|
|
1286
|
-
const collectCommits = () => {
|
|
1287
|
-
const commit = commitAtHead()
|
|
1288
|
-
if (!commit) {
|
|
1289
|
-
return []
|
|
1290
|
-
}
|
|
1291
|
-
// traverse backwards and build commit tree
|
|
1292
|
-
let c: Commit | undefined = commit
|
|
1293
|
-
let commitsList: Commit[] = []
|
|
1294
|
-
while (c !== undefined) {
|
|
1295
|
-
commitsList = [c, ...commitsList]
|
|
1296
|
-
c = commits.find(parent => parent.hash === c<span class="branch-0 cbranch-no" title="branch not covered" >?.p</span>arent)
|
|
1297
|
-
}
|
|
1298
|
-
return commitsList
|
|
1299
|
-
}
|
|
1300
|
-
const rebuildChangeLog = (commit: Commit) => {
|
|
1301
|
-
// clear current state
|
|
1302
|
-
changeLog.splice(0)
|
|
1303
|
-
version = 0
|
|
1304
|
-
|
|
1305
|
-
// traverse backwards and build changelog
|
|
1306
|
-
let clog = traverseAndCollectChangelog(commit, commits)
|
|
1307
|
-
changeLog.push(...clog)
|
|
1308
|
-
|
|
1309
|
-
// process new changelog
|
|
1310
|
-
gotoLastVersion()
|
|
1311
|
-
}
|
|
1312
|
-
this.logs = <span class="fstat-no" title="function not covered" >(n</span>umberOfCommits) => {
|
|
1313
|
-
const logs: Commit[] = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
1314
|
-
const limit = <span class="cstat-no" title="statement not covered" >numberOfCommits ?? -1</span>
|
|
1315
|
-
let c = <span class="cstat-no" title="statement not covered" >commitAtHead()</span>
|
|
1316
|
-
let counter = <span class="cstat-no" title="statement not covered" >0</span>
|
|
1317
|
-
<span class="cstat-no" title="statement not covered" > while(c !== undefined && (limit === -1 || counter < limit)) {</span>
|
|
1318
|
-
<span class="cstat-no" title="statement not covered" > logs.push(c, ...logs)</span>
|
|
1319
|
-
<span class="cstat-no" title="statement not covered" > counter++</span>
|
|
1320
|
-
<span class="cstat-no" title="statement not covered" > c = commits.find(<span class="fstat-no" title="function not covered" >parent </span>=> <span class="cstat-no" title="statement not covered" >parent.hash === c?.parent)</span></span>
|
|
1321
|
-
}
|
|
1322
|
-
<span class="cstat-no" title="statement not covered" > return logs</span>
|
|
1323
|
-
}
|
|
1324
|
-
// endregion
|
|
1325
|
-
|
|
1326
|
-
this.getHistory = (): History => {
|
|
1327
|
-
// only send back shallow copies of changelog and commits up to current version
|
|
1328
|
-
return {
|
|
1329
|
-
refs: new Map(refs),
|
|
1330
|
-
commits: collectCommits()
|
|
1331
|
-
}
|
|
1332
|
-
}
|
|
1333
|
-
|
|
1334
|
-
// region Commit lookups
|
|
1335
|
-
const commitAtHead = () => {
|
|
1336
|
-
return commitAtHeadIn(REFS_HEAD, refs, commits)
|
|
1337
|
-
}
|
|
1338
|
-
const mustCommitAtHead = () => {
|
|
1339
|
-
const commitHead = commitAtHead()
|
|
1340
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!commitHead) {
|
|
1341
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`unreachable: HEAD or its target ref not present`)</span>
|
|
1342
|
-
}
|
|
1343
|
-
return commitHead
|
|
1344
|
-
}
|
|
1345
|
-
// endregion
|
|
1346
|
-
|
|
1347
|
-
this.commit = async (message, author, amend = false): Promise<string> => {
|
|
1348
|
-
let parent = commitAtHead()
|
|
1349
|
-
if (amend && !parent) {
|
|
1350
|
-
throw new Error(`no commit to amend`)
|
|
1351
|
-
}
|
|
1352
|
-
if (parent) {
|
|
1353
|
-
if (amend) {
|
|
1354
|
-
[parent] = parent.parent ? <span class="branch-0 cbranch-no" title="branch not covered" >shaishToCommit(parent.parent, refs, commits) </span>: [undefined]
|
|
1355
|
-
}
|
|
1356
|
-
}
|
|
1357
|
-
const changesSinceLastCommit = changeLog.slice(parent?.to)
|
|
1358
|
-
if (changesSinceLastCommit.length === 0) {
|
|
1359
|
-
throw new Error(`no changes to commit`)
|
|
1360
|
-
}
|
|
1361
|
-
|
|
1362
|
-
const timestamp = new Date()
|
|
1363
|
-
const changes = [...changesSinceLastCommit]
|
|
1364
|
-
const sha = await calculateHash({
|
|
1365
|
-
message,
|
|
1366
|
-
author,
|
|
1367
|
-
changes,
|
|
1368
|
-
parentRef: parent?.hash,
|
|
1369
|
-
timestamp
|
|
1370
|
-
})
|
|
1371
|
-
|
|
1372
|
-
const commit = {
|
|
1373
|
-
hash: sha,
|
|
1374
|
-
message,
|
|
1375
|
-
author,
|
|
1376
|
-
changes: changes,
|
|
1377
|
-
parent: parent?.hash,
|
|
1378
|
-
timestamp,
|
|
1379
|
-
to: version
|
|
1380
|
-
}
|
|
1381
|
-
if (amend) {
|
|
1382
|
-
const idx = commits.findIndex(c => c === parent)
|
|
1383
|
-
commits.splice(idx, 1)
|
|
1384
|
-
}
|
|
1385
|
-
commits.push(commit)
|
|
1386
|
-
|
|
1387
|
-
const headRef = this.head()
|
|
1388
|
-
if (headRef.includes('refs')) {
|
|
1389
|
-
// but move ref: refs/heads/main
|
|
1390
|
-
moveRef(headRef, commit)
|
|
1391
|
-
} else {
|
|
1392
|
-
// move detached HEAD to new commit
|
|
1393
|
-
moveRef(REFS_HEAD, commit)
|
|
1394
|
-
}
|
|
1395
|
-
|
|
1396
|
-
return sha
|
|
1397
|
-
}
|
|
1398
|
-
|
|
1399
|
-
// region Graph manipulation
|
|
1400
|
-
this.checkout = (shaish, createBranch = false) => {
|
|
1401
|
-
if (createBranch) {
|
|
1402
|
-
validateBranchName(shaish)
|
|
1403
|
-
let branchRef = brancheNameToRef(shaish)
|
|
1404
|
-
const commit = commitAtHead()
|
|
1405
|
-
if (commit) {
|
|
1406
|
-
moveRef(branchRef, commit)
|
|
1407
|
-
}
|
|
1408
|
-
moveRef(REFS_HEAD, branchRef)
|
|
1409
|
-
} else {
|
|
1410
|
-
const [commit, isRef, refKey] = shaishToCommit(shaish, refs, commits)
|
|
1411
|
-
rebuildChangeLog(commit)
|
|
1412
|
-
moveRef(REFS_HEAD, isRef && refKey !== undefined ? refKey : commit)
|
|
1413
|
-
}
|
|
1414
|
-
}
|
|
1415
|
-
this.createBranch = (name) => {
|
|
1416
|
-
validateBranchName(name)
|
|
1417
|
-
const refName = brancheNameToRef(name)
|
|
1418
|
-
const headCommit = commitAtHead()
|
|
1419
|
-
if (!headCommit) {
|
|
1420
|
-
const headRef = this.head()
|
|
1421
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!headRef) {
|
|
1422
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`unreachable: HEAD not present`)</span>
|
|
1423
|
-
}
|
|
1424
|
-
throw new Error(`fatal: not a valid object name: '${getLastItem(headRef)}'`)
|
|
1425
|
-
}
|
|
1426
|
-
refs.set(refName, { name: name, value: headCommit.hash })
|
|
1427
|
-
return refName
|
|
1428
|
-
}
|
|
1429
|
-
const moveRef = (refName: string, value: string | Commit) => {
|
|
1430
|
-
let ref = refs.get(refName)
|
|
1431
|
-
const val = typeof value === 'string' ? `${refPrefix}${value}` : value.hash
|
|
1432
|
-
if (!ref) {
|
|
1433
|
-
ref = { name: getLastItem(refName), value: val }
|
|
1434
|
-
} else {
|
|
1435
|
-
ref.value = val
|
|
1436
|
-
}
|
|
1437
|
-
refs.set(refName, ref)
|
|
1438
|
-
}
|
|
1439
|
-
this.merge = source => {
|
|
1440
|
-
// inspiration
|
|
1441
|
-
// http://think-like-a-git.net
|
|
1442
|
-
// also check isomorphic-git
|
|
1443
|
-
// for fancier merge tree
|
|
1444
|
-
// https://github.com/isomorphic-git/isomorphic-git/blob/a623133345a5d8b6bb7a8352ea9702ce425d8266/src/utils/mergeTree.js#L33
|
|
1445
|
-
|
|
1446
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof source !== 'string') {
|
|
1447
|
-
// const srcHead = commitAtHeadIn(REFS_HEAD, src.refs, src.commits)
|
|
1448
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`fatal: source type (${source instanceof Repository ? 'Repository' : 'History'}) not implemented`)</span>
|
|
1449
|
-
}
|
|
1450
|
-
|
|
1451
|
-
const [srcCommit] = shaishToCommit(source, refs, commits)
|
|
1452
|
-
const headCommit = mustCommitAtHead()
|
|
1453
|
-
|
|
1454
|
-
// no change
|
|
1455
|
-
// *---* (master)
|
|
1456
|
-
// |
|
|
1457
|
-
// * (foo)
|
|
1458
|
-
if (headCommit.hash === srcCommit.hash) {
|
|
1459
|
-
throw new Error(`already up to date`)
|
|
1460
|
-
}
|
|
1461
|
-
|
|
1462
|
-
// fast-forward
|
|
1463
|
-
// *---* (master)
|
|
1464
|
-
// \
|
|
1465
|
-
// *---*---* (foo)
|
|
1466
|
-
// result:
|
|
1467
|
-
// *---*
|
|
1468
|
-
// \
|
|
1469
|
-
// *---*---* (master, foo)
|
|
1470
|
-
const [isAncestor] = mapPath(headCommit, srcCommit, commits)
|
|
1471
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (isAncestor) {
|
|
1472
|
-
moveRef(this.head(), srcCommit)
|
|
1473
|
-
rebuildChangeLog(srcCommit)
|
|
1474
|
-
return srcCommit.hash
|
|
1475
|
-
}
|
|
1476
|
-
|
|
1477
|
-
// todo diverge
|
|
1478
|
-
// *---*---* (master)
|
|
1479
|
-
// \
|
|
1480
|
-
// *---*---* (foo)
|
|
1481
|
-
// result:
|
|
1482
|
-
// ↓
|
|
1483
|
-
// *---*---*-------* (master)
|
|
1484
|
-
// \ /
|
|
1485
|
-
// *---*---* (foo)
|
|
1486
|
-
// if (false) {
|
|
1487
|
-
// throw new Error('diverge not implemented yet')
|
|
1488
|
-
// }
|
|
1489
|
-
|
|
1490
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('unknown merge type: not implemented yet')</span>
|
|
1491
|
-
}
|
|
1492
|
-
// endregion
|
|
1493
|
-
|
|
1494
|
-
// apply change log at the end of the constructor
|
|
1495
|
-
const headCommit = commitAtHead()
|
|
1496
|
-
if (headCommit) {
|
|
1497
|
-
rebuildChangeLog(headCommit)
|
|
1498
|
-
}
|
|
1499
|
-
} as any as RespositoryObjectType
|
|
1500
|
-
|
|
1501
|
-
const getLastItem = (thePath: string) => thePath.substring(thePath.lastIndexOf('/') + 1)
|
|
1502
|
-
const cleanRefValue = (ref: string) => ref.replace(refPrefix, '')
|
|
1503
|
-
const brancheNameToRef = (name: string) => {
|
|
1504
|
-
return `refs/heads/${name}`
|
|
1505
|
-
}
|
|
1506
|
-
const validateBranchName = (name: string) => {
|
|
1507
|
-
if (!validBranch(name)) {
|
|
1508
|
-
throw new Error(`invalid ref name`)
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
|
-
|
|
1512
|
-
/**
|
|
1513
|
-
* Traverses the commit tree backwards and reassembles the changelog
|
|
1514
|
-
* @param commit
|
|
1515
|
-
* @param commitsList
|
|
1516
|
-
*/
|
|
1517
|
-
const traverseAndCollectChangelog = (commit: Commit, commitsList: Commit[]) => {
|
|
1518
|
-
let c: Commit | undefined = commit
|
|
1519
|
-
let clog: Change[] = []
|
|
1520
|
-
while (c !== undefined) {
|
|
1521
|
-
clog = [...commit.changes, ...clog]
|
|
1522
|
-
c = commitsList.find(parent => parent.hash === c<span class="branch-0 cbranch-no" title="branch not covered" >?.p</span>arent)
|
|
1523
|
-
}
|
|
1524
|
-
return clog
|
|
1525
|
-
}
|
|
1526
|
-
|
|
1527
|
-
const mapPath = (from: Commit, to: Commit, commits: Commit[]): [isAncestor: boolean] => {
|
|
1528
|
-
let c: Commit | undefined = to
|
|
1529
|
-
while (c !== undefined) {
|
|
1530
|
-
c = commits.find(parent => parent.hash === c<span class="branch-0 cbranch-no" title="branch not covered" >?.p</span>arent)
|
|
1531
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (c<span class="branch-0 cbranch-no" title="branch not covered" >?.h</span>ash === from.hash) {
|
|
1532
|
-
return [true]
|
|
1533
|
-
}
|
|
1534
|
-
}
|
|
1535
|
-
<span class="cstat-no" title="statement not covered" > return [false]</span>
|
|
1536
|
-
}
|
|
1537
|
-
|
|
1538
|
-
/**
|
|
1539
|
-
* Returns the commit to which the provided ref is pointing
|
|
1540
|
-
* @param ref - needs to be in key format, e.g. refs/heads/... or refs/tags/...
|
|
1541
|
-
* @param references
|
|
1542
|
-
* @param commitsList
|
|
1543
|
-
*/
|
|
1544
|
-
const commitAtHeadIn = (ref: string, references: Map<string, Reference>, commitsList: Commit[]) => {
|
|
1545
|
-
const reference = references.get(ref)
|
|
1546
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!reference) {
|
|
1547
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`unreachable: '${ref}' is not present`)</span>
|
|
1548
|
-
}
|
|
1549
|
-
let commitHash
|
|
1550
|
-
if (reference.value.includes(refPrefix)) {
|
|
1551
|
-
const refKey = cleanRefValue(reference.value)
|
|
1552
|
-
const targetRef = references.get(refKey)
|
|
1553
|
-
if (!targetRef) {
|
|
1554
|
-
// target branch may not have been saved yet
|
|
1555
|
-
return undefined
|
|
1556
|
-
}
|
|
1557
|
-
commitHash = targetRef.value
|
|
1558
|
-
} else {
|
|
1559
|
-
commitHash = reference.value
|
|
1560
|
-
}
|
|
1561
|
-
for (const c of commitsList) {
|
|
1562
|
-
if (c.hash === commitHash) {
|
|
1563
|
-
return c
|
|
1564
|
-
}
|
|
1565
|
-
}
|
|
1566
|
-
<span class="cstat-no" title="statement not covered" > return undefined</span>
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
/**
|
|
1570
|
-
* Accepts a shaish expression (e.g. refs (branches, tags), commitSha) and returns
|
|
1571
|
-
* - a commit of type Commit
|
|
1572
|
-
* - isRef boolean whether it is a direct reference
|
|
1573
|
-
* - ref the key of the reference
|
|
1574
|
-
*/
|
|
1575
|
-
const shaishToCommit = (shaish: string, references: Map<string, Reference>, commitsList: Commit[]): [commit: Commit, isRef: boolean, ref: string | undefined] => {
|
|
1576
|
-
let sha = shaish
|
|
1577
|
-
let isRef = false
|
|
1578
|
-
let refKey: string | undefined = undefined
|
|
1579
|
-
|
|
1580
|
-
// check for refs
|
|
1581
|
-
for (const [name, ref] of references.entries()) {
|
|
1582
|
-
// match on
|
|
1583
|
-
if (ref.name === shaish || name === shaish) {
|
|
1584
|
-
isRef = true
|
|
1585
|
-
refKey = name
|
|
1586
|
-
sha = ref.value
|
|
1587
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (sha.includes(refPrefix)) {
|
|
1588
|
-
const cleanedRef = <span class="cstat-no" title="statement not covered" >cleanRefValue(sha)</span>
|
|
1589
|
-
const c = <span class="cstat-no" title="statement not covered" >commitAtHeadIn(cleanedRef, references, commitsList)</span>
|
|
1590
|
-
<span class="cstat-no" title="statement not covered" > if (!c) {</span>
|
|
1591
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`${cleanedRef} points to non-existing commit`)</span>
|
|
1592
|
-
}
|
|
1593
|
-
<span class="cstat-no" title="statement not covered" > return [c, isRef, refKey]</span>
|
|
1594
|
-
}
|
|
1595
|
-
break
|
|
1596
|
-
}
|
|
1597
|
-
}
|
|
1598
|
-
// check for partial sha matches
|
|
1599
|
-
const found = commitsList.filter(c => c.hash.indexOf(sha) > -1)
|
|
1600
|
-
if (found.length === 0) {
|
|
1601
|
-
throw new Error(`pathspec '${shaish}' did not match any known refs`)
|
|
1602
|
-
}
|
|
1603
|
-
// but sha should be specific enough to resolve to 1 commit
|
|
1604
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (found.length > 1) {
|
|
1605
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`commit `)</span>
|
|
1606
|
-
}
|
|
1607
|
-
return [found[0], isRef, refKey]
|
|
1608
|
-
}
|
|
1609
|
-
|
|
1610
|
-
/**
|
|
1611
|
-
* Prints the underlying changelog of a repository
|
|
1612
|
-
* @param repository
|
|
1613
|
-
*/
|
|
1614
|
-
export const printChangeLog = <span class="fstat-no" title="function not covered" ><T>(r</span>epository: RepositoryObject<T>) => {
|
|
1615
|
-
<span class="cstat-no" title="statement not covered" > console.log('----------------------------------------------------------')</span>
|
|
1616
|
-
<span class="cstat-no" title="statement not covered" > console.log(`Changelog at ${repository.head()}`)</span>
|
|
1617
|
-
const history = <span class="cstat-no" title="statement not covered" >repository.getHistory()</span>
|
|
1618
|
-
const head = <span class="cstat-no" title="statement not covered" >commitAtHeadIn(repository.head(), history.refs, history.commits)</span>
|
|
1619
|
-
<span class="cstat-no" title="statement not covered" > if (!head) {</span>
|
|
1620
|
-
<span class="cstat-no" title="statement not covered" > throw new Error(`fatal: HEAD is not defined`)</span>
|
|
1621
|
-
}
|
|
1622
|
-
const changeLog = <span class="cstat-no" title="statement not covered" >traverseAndCollectChangelog(head, history.commits)</span>
|
|
1623
|
-
<span class="cstat-no" title="statement not covered" > for (const [, chg] of changeLog.entries()) {</span>
|
|
1624
|
-
<span class="cstat-no" title="statement not covered" > console.log(` ${JSON.stringify(chg)}`)</span>
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1627
|
-
<span class="cstat-no" title="statement not covered" > console.log('----------------------------------------------------------')</span>
|
|
1628
|
-
}
|
|
1629
|
-
</pre></td></tr></table></pre>
|
|
1630
|
-
|
|
1631
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1632
|
-
</div><!-- /wrapper -->
|
|
1633
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1634
|
-
Code coverage generated by
|
|
1635
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1636
|
-
at Fri Mar 11 2022 19:59:23 GMT+0000 (Coordinated Universal Time)
|
|
1637
|
-
</div>
|
|
1638
|
-
<script src="prettify.js"></script>
|
|
1639
|
-
<script>
|
|
1640
|
-
window.onload = function () {
|
|
1641
|
-
prettyPrint();
|
|
1642
|
-
};
|
|
1643
|
-
</script>
|
|
1644
|
-
<script src="sorter.js"></script>
|
|
1645
|
-
<script src="block-navigation.js"></script>
|
|
1646
|
-
</body>
|
|
1647
|
-
</html>
|
|
1648
|
-
|