apostrophe 2.220.6 → 2.221.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
- package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
- package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
- package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
- package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
- package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +1 -0
- package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +1 -0
- package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +1 -0
- package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +1 -0
- package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -0
- package/CHANGELOG.md +33 -0
- package/coverage/a3/defaults.js.html +253 -0
- package/coverage/a3/index.html +131 -0
- package/coverage/a3/index.js.html +2338 -0
- package/coverage/a3/lib/escape-host.js.html +109 -0
- package/coverage/a3/lib/index.html +176 -0
- package/coverage/a3/lib/mongodb-connect.js.html +250 -0
- package/coverage/a3/lib/moog-require.js.html +790 -0
- package/coverage/a3/lib/moog.js.html +1711 -0
- package/coverage/a3/lib/opentelemetry.js.html +517 -0
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +931 -0
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +115 -0
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +1105 -0
- package/coverage/a3/modules/@apostrophecms/archive-page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +97 -0
- package/coverage/a3/modules/@apostrophecms/area/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/area/index.js.html +2104 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +469 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +286 -0
- package/coverage/a3/modules/@apostrophecms/asset/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/index.js.html +3982 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +346 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +289 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +148 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +184 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +238 -0
- package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +958 -0
- package/coverage/a3/modules/@apostrophecms/attachment/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +3676 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +205 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +328 -0
- package/coverage/a3/modules/@apostrophecms/busy/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/busy/index.js.html +145 -0
- package/coverage/a3/modules/@apostrophecms/cache/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/cache/index.js.html +424 -0
- package/coverage/a3/modules/@apostrophecms/db/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/db/index.js.html +640 -0
- package/coverage/a3/modules/@apostrophecms/doc/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc/index.js.html +3937 -0
- package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +622 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +8638 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +319 -0
- package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/email/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/email/index.js.html +301 -0
- package/coverage/a3/modules/@apostrophecms/error/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/error/index.js.html +202 -0
- package/coverage/a3/modules/@apostrophecms/express/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/express/index.js.html +2116 -0
- package/coverage/a3/modules/@apostrophecms/file/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/file/index.js.html +367 -0
- package/coverage/a3/modules/@apostrophecms/file-tag/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +127 -0
- package/coverage/a3/modules/@apostrophecms/global/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/global/index.js.html +535 -0
- package/coverage/a3/modules/@apostrophecms/home-page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +94 -0
- package/coverage/a3/modules/@apostrophecms/html-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +271 -0
- package/coverage/a3/modules/@apostrophecms/http/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/http/index.js.html +976 -0
- package/coverage/a3/modules/@apostrophecms/i18n/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +2083 -0
- package/coverage/a3/modules/@apostrophecms/image/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image/index.js.html +1486 -0
- package/coverage/a3/modules/@apostrophecms/image-tag/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +127 -0
- package/coverage/a3/modules/@apostrophecms/image-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +145 -0
- package/coverage/a3/modules/@apostrophecms/job/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/job/index.js.html +1321 -0
- package/coverage/a3/modules/@apostrophecms/launder/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/launder/index.js.html +124 -0
- package/coverage/a3/modules/@apostrophecms/lock/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/lock/index.js.html +676 -0
- package/coverage/a3/modules/@apostrophecms/login/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/login/index.js.html +2617 -0
- package/coverage/a3/modules/@apostrophecms/migration/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/migration/index.js.html +970 -0
- package/coverage/a3/modules/@apostrophecms/modal/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/modal/index.js.html +193 -0
- package/coverage/a3/modules/@apostrophecms/module/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/module/index.js.html +2500 -0
- package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +547 -0
- package/coverage/a3/modules/@apostrophecms/module/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/notification/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/notification/index.js.html +1315 -0
- package/coverage/a3/modules/@apostrophecms/oembed/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +781 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +161 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +178 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +124 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +256 -0
- package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +322 -0
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +268 -0
- package/coverage/a3/modules/@apostrophecms/page/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page/index.js.html +6955 -0
- package/coverage/a3/modules/@apostrophecms/page/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +568 -0
- package/coverage/a3/modules/@apostrophecms/page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +1501 -0
- package/coverage/a3/modules/@apostrophecms/pager/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/pager/index.js.html +232 -0
- package/coverage/a3/modules/@apostrophecms/permission/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/permission/index.js.html +1057 -0
- package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +160 -0
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +1051 -0
- package/coverage/a3/modules/@apostrophecms/piece-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +3103 -0
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +157 -0
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +1363 -0
- package/coverage/a3/modules/@apostrophecms/schema/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/schema/index.js.html +4603 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +3502 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +703 -0
- package/coverage/a3/modules/@apostrophecms/search/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/search/index.js.html +1222 -0
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +343 -0
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +595 -0
- package/coverage/a3/modules/@apostrophecms/task/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/task/index.js.html +1147 -0
- package/coverage/a3/modules/@apostrophecms/template/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/template/index.js.html +2731 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +559 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +310 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +325 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +146 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +490 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/index.html +131 -0
- package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +658 -0
- package/coverage/a3/modules/@apostrophecms/ui/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/ui/index.js.html +181 -0
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +286 -0
- package/coverage/a3/modules/@apostrophecms/url/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/url/index.js.html +733 -0
- package/coverage/a3/modules/@apostrophecms/user/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/user/index.js.html +1684 -0
- package/coverage/a3/modules/@apostrophecms/user/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +157 -0
- package/coverage/a3/modules/@apostrophecms/util/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/util/index.js.html +3424 -0
- package/coverage/a3/modules/@apostrophecms/util/lib/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +319 -0
- package/coverage/a3/modules/@apostrophecms/video-widget/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +178 -0
- package/coverage/a3/modules/@apostrophecms/widget-type/index.html +116 -0
- package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +1225 -0
- package/coverage/a3/test-lib/index.html +131 -0
- package/coverage/a3/test-lib/test.js.html +232 -0
- package/coverage/a3/test-lib/util.js.html +373 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +1256 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/lib/modules/apostrophe-assets/index.js +3 -1
- package/lib/modules/apostrophe-doc-type-manager/lib/routes.js +8 -1
- package/lib/modules/apostrophe-global/index.js +6 -0
- package/lib/modules/apostrophe-login/index.js +1 -1
- package/lib/modules/apostrophe-modal/public/css/components/modal-tabs.less +0 -1
- package/lib/modules/apostrophe-modal/views/batch.html +1 -1
- package/lib/modules/apostrophe-pages/lib/api.js +8 -6
- package/lib/modules/apostrophe-schemas/index.js +50 -44
- package/package.json +4 -5
- package/test/login-throttle.js +4 -0
- package/test/package.json +0 -75
|
@@ -0,0 +1,3982 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for a3/modules/@apostrophecms/asset/index.js</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> / <a href="index.html">a3/modules/@apostrophecms/asset</a> index.js</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">88.76% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>387/436</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">80.83% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>194/240</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">87.05% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>74/85</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">88.65% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>383/432</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>
|
|
588
|
+
<a name='L523'></a><a href='#L523'>523</a>
|
|
589
|
+
<a name='L524'></a><a href='#L524'>524</a>
|
|
590
|
+
<a name='L525'></a><a href='#L525'>525</a>
|
|
591
|
+
<a name='L526'></a><a href='#L526'>526</a>
|
|
592
|
+
<a name='L527'></a><a href='#L527'>527</a>
|
|
593
|
+
<a name='L528'></a><a href='#L528'>528</a>
|
|
594
|
+
<a name='L529'></a><a href='#L529'>529</a>
|
|
595
|
+
<a name='L530'></a><a href='#L530'>530</a>
|
|
596
|
+
<a name='L531'></a><a href='#L531'>531</a>
|
|
597
|
+
<a name='L532'></a><a href='#L532'>532</a>
|
|
598
|
+
<a name='L533'></a><a href='#L533'>533</a>
|
|
599
|
+
<a name='L534'></a><a href='#L534'>534</a>
|
|
600
|
+
<a name='L535'></a><a href='#L535'>535</a>
|
|
601
|
+
<a name='L536'></a><a href='#L536'>536</a>
|
|
602
|
+
<a name='L537'></a><a href='#L537'>537</a>
|
|
603
|
+
<a name='L538'></a><a href='#L538'>538</a>
|
|
604
|
+
<a name='L539'></a><a href='#L539'>539</a>
|
|
605
|
+
<a name='L540'></a><a href='#L540'>540</a>
|
|
606
|
+
<a name='L541'></a><a href='#L541'>541</a>
|
|
607
|
+
<a name='L542'></a><a href='#L542'>542</a>
|
|
608
|
+
<a name='L543'></a><a href='#L543'>543</a>
|
|
609
|
+
<a name='L544'></a><a href='#L544'>544</a>
|
|
610
|
+
<a name='L545'></a><a href='#L545'>545</a>
|
|
611
|
+
<a name='L546'></a><a href='#L546'>546</a>
|
|
612
|
+
<a name='L547'></a><a href='#L547'>547</a>
|
|
613
|
+
<a name='L548'></a><a href='#L548'>548</a>
|
|
614
|
+
<a name='L549'></a><a href='#L549'>549</a>
|
|
615
|
+
<a name='L550'></a><a href='#L550'>550</a>
|
|
616
|
+
<a name='L551'></a><a href='#L551'>551</a>
|
|
617
|
+
<a name='L552'></a><a href='#L552'>552</a>
|
|
618
|
+
<a name='L553'></a><a href='#L553'>553</a>
|
|
619
|
+
<a name='L554'></a><a href='#L554'>554</a>
|
|
620
|
+
<a name='L555'></a><a href='#L555'>555</a>
|
|
621
|
+
<a name='L556'></a><a href='#L556'>556</a>
|
|
622
|
+
<a name='L557'></a><a href='#L557'>557</a>
|
|
623
|
+
<a name='L558'></a><a href='#L558'>558</a>
|
|
624
|
+
<a name='L559'></a><a href='#L559'>559</a>
|
|
625
|
+
<a name='L560'></a><a href='#L560'>560</a>
|
|
626
|
+
<a name='L561'></a><a href='#L561'>561</a>
|
|
627
|
+
<a name='L562'></a><a href='#L562'>562</a>
|
|
628
|
+
<a name='L563'></a><a href='#L563'>563</a>
|
|
629
|
+
<a name='L564'></a><a href='#L564'>564</a>
|
|
630
|
+
<a name='L565'></a><a href='#L565'>565</a>
|
|
631
|
+
<a name='L566'></a><a href='#L566'>566</a>
|
|
632
|
+
<a name='L567'></a><a href='#L567'>567</a>
|
|
633
|
+
<a name='L568'></a><a href='#L568'>568</a>
|
|
634
|
+
<a name='L569'></a><a href='#L569'>569</a>
|
|
635
|
+
<a name='L570'></a><a href='#L570'>570</a>
|
|
636
|
+
<a name='L571'></a><a href='#L571'>571</a>
|
|
637
|
+
<a name='L572'></a><a href='#L572'>572</a>
|
|
638
|
+
<a name='L573'></a><a href='#L573'>573</a>
|
|
639
|
+
<a name='L574'></a><a href='#L574'>574</a>
|
|
640
|
+
<a name='L575'></a><a href='#L575'>575</a>
|
|
641
|
+
<a name='L576'></a><a href='#L576'>576</a>
|
|
642
|
+
<a name='L577'></a><a href='#L577'>577</a>
|
|
643
|
+
<a name='L578'></a><a href='#L578'>578</a>
|
|
644
|
+
<a name='L579'></a><a href='#L579'>579</a>
|
|
645
|
+
<a name='L580'></a><a href='#L580'>580</a>
|
|
646
|
+
<a name='L581'></a><a href='#L581'>581</a>
|
|
647
|
+
<a name='L582'></a><a href='#L582'>582</a>
|
|
648
|
+
<a name='L583'></a><a href='#L583'>583</a>
|
|
649
|
+
<a name='L584'></a><a href='#L584'>584</a>
|
|
650
|
+
<a name='L585'></a><a href='#L585'>585</a>
|
|
651
|
+
<a name='L586'></a><a href='#L586'>586</a>
|
|
652
|
+
<a name='L587'></a><a href='#L587'>587</a>
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
|
|
1366
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1367
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1368
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1369
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1370
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1371
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1372
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1373
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1374
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1375
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1376
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1377
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1397
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1409
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1410
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1413
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1414
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1417
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1421
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1422
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1423
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1424
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1425
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1426
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1432
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1433
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1434
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1439
|
+
<span class="cline-any cline-yes">90x</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-yes">90x</span>
|
|
1445
|
+
<span class="cline-any cline-no"> </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">90x</span>
|
|
1450
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1451
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1452
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
+
<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-yes">90x</span>
|
|
1459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1461
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1462
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1469
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1473
|
+
<span class="cline-any cline-yes">22x</span>
|
|
1474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1480
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1487
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1488
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1489
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1490
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1491
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1493
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1495
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1496
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1506
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1507
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1513
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1515
|
+
<span class="cline-any cline-yes">30x</span>
|
|
1516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1517
|
+
<span class="cline-any cline-yes">102x</span>
|
|
1518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1519
|
+
<span class="cline-any cline-yes">102x</span>
|
|
1520
|
+
<span class="cline-any cline-yes">35x</span>
|
|
1521
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1522
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1528
|
+
<span class="cline-any cline-yes">34x</span>
|
|
1529
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1532
|
+
<span class="cline-any cline-no"> </span>
|
|
1533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1535
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1536
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1537
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1538
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1539
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1542
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1543
|
+
<span class="cline-any cline-no"> </span>
|
|
1544
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1545
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1546
|
+
<span class="cline-any cline-no"> </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-yes">24x</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
|
+
<span class="cline-any cline-yes">102x</span>
|
|
1558
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1559
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1564
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1566
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1567
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
+
<span class="cline-any cline-yes">29x</span>
|
|
1572
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1573
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1574
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1575
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1576
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1577
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1578
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1583
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1584
|
+
<span class="cline-any cline-yes">19x</span>
|
|
1585
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1587
|
+
<span class="cline-any cline-no"> </span>
|
|
1588
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1589
|
+
<span class="cline-any cline-yes">19x</span>
|
|
1590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
+
<span class="cline-any cline-yes">19x</span>
|
|
1596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1597
|
+
<span class="cline-any cline-yes">19x</span>
|
|
1598
|
+
<span class="cline-any cline-no"> </span>
|
|
1599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1603
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1604
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1605
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1606
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1607
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1608
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1612
|
+
<span class="cline-any cline-yes">5100x</span>
|
|
1613
|
+
<span class="cline-any cline-yes">5100x</span>
|
|
1614
|
+
<span class="cline-any cline-yes">5100x</span>
|
|
1615
|
+
<span class="cline-any cline-yes">26292x</span>
|
|
1616
|
+
<span class="cline-any cline-yes">26292x</span>
|
|
1617
|
+
<span class="cline-any cline-yes">26292x</span>
|
|
1618
|
+
<span class="cline-any cline-yes">26292x</span>
|
|
1619
|
+
<span class="cline-any cline-yes">26292x</span>
|
|
1620
|
+
<span class="cline-any cline-yes">87858x</span>
|
|
1621
|
+
<span class="cline-any cline-yes">50976x</span>
|
|
1622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1626
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1627
|
+
<span class="cline-any cline-yes">98x</span>
|
|
1628
|
+
<span class="cline-any cline-yes">11096x</span>
|
|
1629
|
+
<span class="cline-any cline-yes">11096x</span>
|
|
1630
|
+
<span class="cline-any cline-yes">50976x</span>
|
|
1631
|
+
<span class="cline-any cline-yes">50976x</span>
|
|
1632
|
+
<span class="cline-any cline-yes">1224x</span>
|
|
1633
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1640
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1641
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1644
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1645
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1646
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1648
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1649
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1650
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1651
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1652
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1653
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1654
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1655
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1656
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1657
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1661
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1662
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1664
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1665
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1670
|
+
<span class="cline-any cline-yes">38x</span>
|
|
1671
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1672
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1673
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
+
<span class="cline-any cline-yes">68x</span>
|
|
1677
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1694
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1695
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1696
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1697
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1698
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1699
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1700
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1701
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1702
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1703
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1705
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1706
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1707
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1708
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1709
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1710
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1711
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1712
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1713
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1714
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1717
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1718
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1719
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1721
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1722
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1723
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1725
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1730
|
+
<span class="cline-any cline-yes">47x</span>
|
|
1731
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1732
|
+
<span class="cline-any cline-yes">46x</span>
|
|
1733
|
+
<span class="cline-any cline-no"> </span>
|
|
1734
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
+
<span class="cline-any cline-yes">47x</span>
|
|
1736
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1737
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1738
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1740
|
+
<span class="cline-any cline-yes">47x</span>
|
|
1741
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1742
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1743
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1745
|
+
<span class="cline-any cline-yes">20x</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-neutral"> </span>
|
|
1754
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1755
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1756
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1757
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1758
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1759
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1763
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1764
|
+
<span class="cline-any cline-yes">20x</span>
|
|
1765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1766
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1769
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1771
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
+
<span class="cline-any cline-yes">67x</span>
|
|
1774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1783
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
+
<span class="cline-any cline-yes">90x</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-neutral"> </span>
|
|
1793
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1808
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1815
|
+
<span class="cline-any cline-yes">528x</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">528x</span>
|
|
1821
|
+
<span class="cline-any cline-yes">2736x</span>
|
|
1822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1826
|
+
<span class="cline-any cline-no"> </span>
|
|
1827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
+
<span class="cline-any cline-yes">2736x</span>
|
|
1829
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1830
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1832
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1834
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1835
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1838
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1839
|
+
<span class="cline-any cline-yes">900x</span>
|
|
1840
|
+
<span class="cline-any cline-no"> </span>
|
|
1841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1842
|
+
<span class="cline-any cline-yes">900x</span>
|
|
1843
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
+
<span class="cline-any cline-yes">900x</span>
|
|
1845
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1847
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1851
|
+
<span class="cline-any cline-yes">29x</span>
|
|
1852
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1853
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1854
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1855
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1856
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1857
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1858
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1861
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1866
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1870
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
+
<span class="cline-any cline-yes">55x</span>
|
|
1873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1875
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1876
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1877
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1880
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1882
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1883
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1884
|
+
<span class="cline-any cline-yes">165x</span>
|
|
1885
|
+
<span class="cline-any cline-yes">165x</span>
|
|
1886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
+
<span class="cline-any cline-yes">570x</span>
|
|
1889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
+
<span class="cline-any cline-yes">165x</span>
|
|
1894
|
+
<span class="cline-any cline-yes">570x</span>
|
|
1895
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1896
|
+
<span class="cline-any cline-yes">328x</span>
|
|
1897
|
+
<span class="cline-any cline-yes">328x</span>
|
|
1898
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1899
|
+
<span class="cline-any cline-yes">328x</span>
|
|
1900
|
+
<span class="cline-any cline-yes">110x</span>
|
|
1901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1902
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1905
|
+
<span class="cline-any cline-yes">218x</span>
|
|
1906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1907
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
+
<span class="cline-any cline-yes">165x</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-neutral"> </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-neutral"> </span>
|
|
1921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1924
|
+
<span class="cline-any cline-yes">19x</span>
|
|
1925
|
+
<span class="cline-any cline-yes">18x</span>
|
|
1926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1928
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1929
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1930
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1931
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
+
<span class="cline-any cline-no"> </span>
|
|
1934
|
+
<span class="cline-any cline-no"> </span>
|
|
1935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1938
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1939
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1940
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1942
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1943
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1944
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1945
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1946
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1947
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1948
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1950
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1951
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1952
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1956
|
+
<span class="cline-any cline-yes">146x</span>
|
|
1957
|
+
<span class="cline-any cline-yes">146x</span>
|
|
1958
|
+
<span class="cline-any cline-yes">146x</span>
|
|
1959
|
+
<span class="cline-any cline-yes">7614x</span>
|
|
1960
|
+
<span class="cline-any cline-yes">7614x</span>
|
|
1961
|
+
<span class="cline-any cline-yes">39282x</span>
|
|
1962
|
+
<span class="cline-any cline-yes">22722x</span>
|
|
1963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1964
|
+
<span class="cline-any cline-yes">16560x</span>
|
|
1965
|
+
<span class="cline-any cline-yes">16560x</span>
|
|
1966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1969
|
+
<span class="cline-any cline-yes">146x</span>
|
|
1970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1974
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1975
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1976
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1977
|
+
<span class="cline-any cline-yes">1201x</span>
|
|
1978
|
+
<span class="cline-any cline-yes">1201x</span>
|
|
1979
|
+
<span class="cline-any cline-no"> </span>
|
|
1980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1981
|
+
<span class="cline-any cline-yes">1201x</span>
|
|
1982
|
+
<span class="cline-any cline-yes">1201x</span>
|
|
1983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1984
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1985
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
+
<span class="cline-any cline-yes">146x</span>
|
|
1989
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1992
|
+
<span class="cline-any cline-yes">230x</span>
|
|
1993
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1994
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1998
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1999
|
+
<span class="cline-any cline-yes">230x</span>
|
|
2000
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2001
|
+
<span class="cline-any cline-yes">167x</span>
|
|
2002
|
+
<span class="cline-any cline-no"> </span>
|
|
2003
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2004
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2010
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2011
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2012
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2013
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2014
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2018
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2019
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2021
|
+
<span class="cline-any cline-yes">1201x</span>
|
|
2022
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2023
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2025
|
+
<span class="cline-any cline-yes">60x</span>
|
|
2026
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2028
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2029
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2030
|
+
<span class="cline-any cline-yes">1559x</span>
|
|
2031
|
+
<span class="cline-any cline-yes">257x</span>
|
|
2032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
+
<span class="cline-any cline-yes">230x</span>
|
|
2036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2037
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2041
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2042
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2043
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2044
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2045
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2046
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2048
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2049
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2050
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
+
<span class="cline-any cline-yes">38x</span>
|
|
2053
|
+
<span class="cline-any cline-yes">38x</span>
|
|
2054
|
+
<span class="cline-any cline-yes">38x</span>
|
|
2055
|
+
<span class="cline-any cline-yes">38x</span>
|
|
2056
|
+
<span class="cline-any cline-no"> </span>
|
|
2057
|
+
<span class="cline-any cline-no"> </span>
|
|
2058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2059
|
+
<span class="cline-any cline-no"> </span>
|
|
2060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2064
|
+
<span class="cline-any cline-yes">2760x</span>
|
|
2065
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2066
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2067
|
+
<span class="cline-any cline-neutral"> </span>
|
|
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>
|
|
2072
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2074
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2076
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2077
|
+
<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-neutral"> </span>
|
|
2081
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2083
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2084
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2085
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2086
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2087
|
+
<span class="cline-any cline-yes">28x</span>
|
|
2088
|
+
<span class="cline-any cline-yes">28x</span>
|
|
2089
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2090
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2091
|
+
<span class="cline-any cline-no"> </span>
|
|
2092
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2093
|
+
<span class="cline-any cline-yes">28x</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-neutral"> </span>
|
|
2098
|
+
<span class="cline-any cline-neutral"> </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-yes">48x</span>
|
|
2105
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2106
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2107
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2108
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2109
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2110
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2111
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2112
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2113
|
+
<span class="cline-any cline-yes">58x</span>
|
|
2114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2115
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2116
|
+
<span class="cline-any cline-yes">48x</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-yes">48x</span>
|
|
2122
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2123
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2124
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2125
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2126
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2127
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
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-neutral"> </span>
|
|
2134
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2137
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2138
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2139
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
+
<span class="cline-any cline-yes">48x</span>
|
|
2146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
+
<span class="cline-any cline-neutral"> </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">11x</span>
|
|
2158
|
+
<span class="cline-any cline-yes">16x</span>
|
|
2159
|
+
<span class="cline-any cline-yes">814x</span>
|
|
2160
|
+
<span class="cline-any cline-yes">14x</span>
|
|
2161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2163
|
+
<span class="cline-any cline-yes">2x</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-neutral"> </span>
|
|
2169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2171
|
+
<span class="cline-any cline-yes">35x</span>
|
|
2172
|
+
<span class="cline-any cline-yes">35x</span>
|
|
2173
|
+
<span class="cline-any cline-yes">35x</span>
|
|
2174
|
+
<span class="cline-any cline-yes">40x</span>
|
|
2175
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2176
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2178
|
+
<span class="cline-any cline-yes">24x</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-neutral"> </span>
|
|
2185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2187
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2190
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2191
|
+
<span class="cline-any cline-neutral"> </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>
|
|
2195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2196
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2198
|
+
<span class="cline-any cline-yes">90x</span>
|
|
2199
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2200
|
+
<span class="cline-any cline-neutral"> </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">90x</span>
|
|
2207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2208
|
+
<span class="cline-any cline-yes">90x</span>
|
|
2209
|
+
<span class="cline-any cline-no"> </span>
|
|
2210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
+
<span class="cline-any cline-yes">90x</span>
|
|
2212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2215
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2218
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2220
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2221
|
+
<span class="cline-any cline-yes">112x</span>
|
|
2222
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2227
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2237
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2241
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2242
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2243
|
+
<span class="cline-any cline-no"> </span>
|
|
2244
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2245
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2246
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2247
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2250
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2252
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2253
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2254
|
+
<span class="cline-any cline-no"> </span>
|
|
2255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2256
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2257
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2259
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2260
|
+
<span class="cline-any cline-yes">44x</span>
|
|
2261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2262
|
+
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
2267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2268
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2277
|
+
<span class="cline-any cline-yes">321x</span>
|
|
2278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2280
|
+
<span class="cline-any cline-yes">195x</span>
|
|
2281
|
+
<span class="cline-any cline-yes">195x</span>
|
|
2282
|
+
<span class="cline-any cline-no"> </span>
|
|
2283
|
+
<span class="cline-any cline-no"> </span>
|
|
2284
|
+
<span class="cline-any cline-no"> </span>
|
|
2285
|
+
<span class="cline-any cline-no"> </span>
|
|
2286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2287
|
+
<span class="cline-any cline-no"> </span>
|
|
2288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2289
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2290
|
+
<span class="cline-any cline-yes">195x</span>
|
|
2291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2294
|
+
<span class="cline-any cline-yes">49x</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-neutral"> </span>
|
|
2300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2303
|
+
<span class="cline-any cline-neutral"> </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-yes">7x</span>
|
|
2311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2315
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2324
|
+
<span class="cline-any cline-yes">101x</span>
|
|
2325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2326
|
+
<span class="cline-any cline-yes">101x</span>
|
|
2327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2334
|
+
<span class="cline-any cline-yes">21x</span>
|
|
2335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2337
|
+
<span class="cline-any cline-yes">21x</span>
|
|
2338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2340
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2342
|
+
<span class="cline-any cline-yes">21x</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-yes">20x</span>
|
|
2347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2348
|
+
<span class="cline-any cline-yes">100x</span>
|
|
2349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2351
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2362
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2365
|
+
<span class="cline-any cline-yes">11x</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">11x</span>
|
|
2372
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2373
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2374
|
+
<span class="cline-any cline-yes">16x</span>
|
|
2375
|
+
<span class="cline-any cline-yes">16x</span>
|
|
2376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2378
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2379
|
+
<span class="cline-any cline-no"> </span>
|
|
2380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2381
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2382
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2383
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2384
|
+
<span class="cline-any cline-yes">9x</span>
|
|
2385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2386
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2387
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
2395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2397
|
+
<span class="cline-any cline-yes">1x</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-neutral"> </span>
|
|
2405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2406
|
+
<span class="cline-any cline-yes">10x</span>
|
|
2407
|
+
<span class="cline-any cline-yes">2x</span>
|
|
2408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2410
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2411
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2414
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2415
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2416
|
+
<span class="cline-any cline-yes">36x</span>
|
|
2417
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2418
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2421
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2422
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2423
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2424
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2427
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2429
|
+
<span class="cline-any cline-yes">8x</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">8x</span>
|
|
2434
|
+
<span class="cline-any cline-yes">16x</span>
|
|
2435
|
+
<span class="cline-any cline-yes">16x</span>
|
|
2436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2438
|
+
<span class="cline-any cline-yes">8x</span>
|
|
2439
|
+
<span class="cline-any cline-yes">7x</span>
|
|
2440
|
+
<span class="cline-any cline-yes">7x</span>
|
|
2441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2445
|
+
<span class="cline-any cline-yes">21x</span>
|
|
2446
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2457
|
+
<span class="cline-any cline-yes">7x</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-neutral"> </span>
|
|
2462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2463
|
+
<span class="cline-any cline-yes">8x</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-neutral"> </span>
|
|
2468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2469
|
+
<span class="cline-any cline-no"> </span>
|
|
2470
|
+
<span class="cline-any cline-yes">36x</span>
|
|
2471
|
+
<span class="cline-any cline-neutral"> </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-yes">11x</span>
|
|
2477
|
+
<span class="cline-any cline-no"> </span>
|
|
2478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2479
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2480
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2483
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2484
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2485
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2487
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2488
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2489
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2490
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2493
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2494
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2495
|
+
<span class="cline-any cline-yes">11x</span>
|
|
2496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2501
|
+
<span class="cline-any cline-neutral"> </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">90x</span>
|
|
2506
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2515
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2520
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2522
|
+
<span class="cline-any cline-yes">90x</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-neutral"> </span>
|
|
2528
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2540
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2545
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2546
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
2555
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2556
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </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-neutral"> </span>
|
|
2573
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2574
|
+
<span class="cline-any cline-neutral"> </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">90x</span>
|
|
2581
|
+
<span class="cline-any cline-yes">82x</span>
|
|
2582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2583
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2585
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2586
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2587
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2588
|
+
<span class="cline-any cline-yes">15x</span>
|
|
2589
|
+
<span class="cline-any cline-no"> </span>
|
|
2590
|
+
<span class="cline-any cline-no"> </span>
|
|
2591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2592
|
+
<span class="cline-any cline-no"> </span>
|
|
2593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2597
|
+
<span class="cline-any cline-yes">15x</span>
|
|
2598
|
+
<span class="cline-any cline-no"> </span>
|
|
2599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2600
|
+
<span class="cline-any cline-yes">15x</span>
|
|
2601
|
+
<span class="cline-any cline-no"> </span>
|
|
2602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2603
|
+
<span class="cline-any cline-yes">15x</span>
|
|
2604
|
+
<span class="cline-any cline-no"> </span>
|
|
2605
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2606
|
+
<span class="cline-any cline-yes">15x</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-yes">90x</span>
|
|
2612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2613
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2616
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2617
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2619
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2620
|
+
<span class="cline-any cline-yes">22x</span>
|
|
2621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2622
|
+
<span class="cline-any cline-no"> </span>
|
|
2623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2625
|
+
<span class="cline-any cline-no"> </span>
|
|
2626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2630
|
+
<span class="cline-any cline-yes">90x</span>
|
|
2631
|
+
<span class="cline-any cline-yes">90x</span>
|
|
2632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2633
|
+
<span class="cline-any cline-no"> </span>
|
|
2634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2636
|
+
<span class="cline-any cline-no"> </span>
|
|
2637
|
+
<span class="cline-any cline-no"> </span>
|
|
2638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2640
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2641
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2644
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2647
|
+
<span class="cline-any cline-no"> </span>
|
|
2648
|
+
<span class="cline-any cline-no"> </span>
|
|
2649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2651
|
+
<span class="cline-any cline-no"> </span>
|
|
2652
|
+
<span class="cline-any cline-no"> </span>
|
|
2653
|
+
<span class="cline-any cline-no"> </span>
|
|
2654
|
+
<span class="cline-any cline-no"> </span>
|
|
2655
|
+
<span class="cline-any cline-no"> </span>
|
|
2656
|
+
<span class="cline-any cline-no"> </span>
|
|
2657
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2658
|
+
<span class="cline-any cline-no"> </span>
|
|
2659
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2660
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2661
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2662
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2663
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2664
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const glob = require('glob');
|
|
2665
|
+
const fs = require('fs-extra');
|
|
2666
|
+
const Promise = require('bluebird');
|
|
2667
|
+
const webpackModule = require('webpack');
|
|
2668
|
+
const globalIcons = require('./lib/globalIcons');
|
|
2669
|
+
const path = require('path');
|
|
2670
|
+
const util = require('util');
|
|
2671
|
+
const express = require('express');
|
|
2672
|
+
const { stripIndent } = require('common-tags');
|
|
2673
|
+
const { merge: webpackMerge } = require('webpack-merge');
|
|
2674
|
+
const cuid = require('cuid');
|
|
2675
|
+
const chokidar = require('chokidar');
|
|
2676
|
+
const _ = require('lodash');
|
|
2677
|
+
const {
|
|
2678
|
+
checkModulesWebpackConfig,
|
|
2679
|
+
getWebpackExtensions,
|
|
2680
|
+
fillExtraBundles,
|
|
2681
|
+
getBundlesNames,
|
|
2682
|
+
writeBundlesImportFiles,
|
|
2683
|
+
findNodeModulesSymlinks
|
|
2684
|
+
} = require('./lib/webpack/utils');
|
|
2685
|
+
|
|
2686
|
+
module.exports = {
|
|
2687
|
+
|
|
2688
|
+
options: {
|
|
2689
|
+
alias: 'asset',
|
|
2690
|
+
// If true, create both modern JavaScript and ES5 (IE11) compatibility
|
|
2691
|
+
// builds of the ui/src browser code in each module, and serve them
|
|
2692
|
+
// to the appropriate browsers without overhead for modern browsers.
|
|
2693
|
+
// This does not attempt to compile the admin UI (ui/apos) for ES5.
|
|
2694
|
+
es5: false,
|
|
2695
|
+
// If this option is true and process.env.NODE_ENV is not `production`,
|
|
2696
|
+
// the browser will refresh when the Apostrophe application
|
|
2697
|
+
// restarts. A useful companion to `nodemon`.
|
|
2698
|
+
refreshOnRestart: false,
|
|
2699
|
+
// If false no UI assets sources will be watched in development.
|
|
2700
|
+
// This option has no effect in production (watch disabled).
|
|
2701
|
+
watch: true,
|
|
2702
|
+
// Miliseconds to wait between asset sources changes before
|
|
2703
|
+
// performing a build.
|
|
2704
|
+
watchDebounceMs: 1000
|
|
2705
|
+
},
|
|
2706
|
+
|
|
2707
|
+
async init(self) {
|
|
2708
|
+
self.restartId = self.apos.util.generateId();
|
|
2709
|
+
self.iconMap = {
|
|
2710
|
+
...globalIcons
|
|
2711
|
+
};
|
|
2712
|
+
self.configureBuilds();
|
|
2713
|
+
self.initUploadfs();
|
|
2714
|
+
|
|
2715
|
+
const { extensions, verifiedBundles } = await getWebpackExtensions({
|
|
2716
|
+
getMetadata: self.apos.synth.getMetadata,
|
|
2717
|
+
modulesToInstantiate: self.apos.modulesToBeInstantiated()
|
|
2718
|
+
});
|
|
2719
|
+
|
|
2720
|
+
self.extraBundles = fillExtraBundles(verifiedBundles);
|
|
2721
|
+
self.webpackExtensions = extensions;
|
|
2722
|
+
self.verifiedBundles = verifiedBundles;
|
|
2723
|
+
self.buildWatcherEnable = process.env.APOS_ASSET_WATCH !== '0' && self.options.watch !== false;
|
|
2724
|
+
self.buildWatcherDebounceMs = parseInt(self.options.watchDebounceMs || <span class="branch-1 cbranch-no" title="branch not covered" >1000,</span> 10);
|
|
2725
|
+
self.buildWatcher = null;
|
|
2726
|
+
},
|
|
2727
|
+
handlers (self) {
|
|
2728
|
+
return {
|
|
2729
|
+
'apostrophe:modulesRegistered': {
|
|
2730
|
+
async runUiBuildTask() {
|
|
2731
|
+
const ran = await self.autorunUiBuildTask();
|
|
2732
|
+
if (ran) {
|
|
2733
|
+
await self.watchUiAndRebuild();
|
|
2734
|
+
}
|
|
2735
|
+
},
|
|
2736
|
+
injectAssetsPlaceholders() {
|
|
2737
|
+
self.apos.template.prepend('head', '@apostrophecms/asset:stylesheets');
|
|
2738
|
+
self.apos.template.append('body', '@apostrophecms/asset:scripts');
|
|
2739
|
+
}
|
|
2740
|
+
},
|
|
2741
|
+
'apostrophe:destroy': {
|
|
2742
|
+
async destroyUploadfs() {
|
|
2743
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (self.uploadfs && (self.uploadfs !== self.apos.uploadfs)) {
|
|
2744
|
+
<span class="cstat-no" title="statement not covered" > await Promise.promisify(self.uploadfs.destroy)();</span>
|
|
2745
|
+
}
|
|
2746
|
+
},
|
|
2747
|
+
async destroyBuildWatcher() {
|
|
2748
|
+
if (self.buildWatcher) {
|
|
2749
|
+
await self.buildWatcher.close();
|
|
2750
|
+
self.buildWatcher = null;
|
|
2751
|
+
}
|
|
2752
|
+
}
|
|
2753
|
+
}
|
|
2754
|
+
};
|
|
2755
|
+
},
|
|
2756
|
+
components(self) {
|
|
2757
|
+
return {
|
|
2758
|
+
scripts(req, data) {
|
|
2759
|
+
const placeholder = `[scripts-placeholder:${cuid()}]`;
|
|
2760
|
+
|
|
2761
|
+
req.scriptsPlaceholder = placeholder;
|
|
2762
|
+
|
|
2763
|
+
return {
|
|
2764
|
+
placeholder
|
|
2765
|
+
};
|
|
2766
|
+
},
|
|
2767
|
+
stylesheets(req, data) {
|
|
2768
|
+
const placeholder = `[stylesheets-placeholder:${cuid()}]`;
|
|
2769
|
+
|
|
2770
|
+
req.stylesheetsPlaceholder = placeholder;
|
|
2771
|
+
|
|
2772
|
+
return {
|
|
2773
|
+
placeholder
|
|
2774
|
+
};
|
|
2775
|
+
}
|
|
2776
|
+
};
|
|
2777
|
+
},
|
|
2778
|
+
tasks(self) {
|
|
2779
|
+
return {
|
|
2780
|
+
build: {
|
|
2781
|
+
usage: 'Build Apostrophe frontend CSS and JS bundles',
|
|
2782
|
+
afterModuleInit: true,
|
|
2783
|
+
async task(argv = {}) {
|
|
2784
|
+
// The lock could become huge, cache it, see computeCacheMeta()
|
|
2785
|
+
let packageLockContentCached;
|
|
2786
|
+
const req = self.apos.task.getReq();
|
|
2787
|
+
const namespace = self.getNamespace();
|
|
2788
|
+
const buildDir = `${self.apos.rootDir}/apos-build/${namespace}`;
|
|
2789
|
+
const bundleDir = `${self.apos.rootDir}/public/apos-frontend/${namespace}`;
|
|
2790
|
+
const modulesToInstantiate = self.apos.modulesToBeInstantiated();
|
|
2791
|
+
// Make it clear if builds should detect changes
|
|
2792
|
+
const detectChanges = typeof argv.changes === 'string';
|
|
2793
|
+
// Remove invalid changes. `argv.changes` is a comma separated list of relative
|
|
2794
|
+
// to `apos.rootDir` files or folders
|
|
2795
|
+
const sourceChanges = detectChanges
|
|
2796
|
+
? filterValidChanges(
|
|
2797
|
+
argv.changes.split(',').map(p => p.trim()),
|
|
2798
|
+
Object.keys(self.apos.modules)
|
|
2799
|
+
)
|
|
2800
|
+
: [];
|
|
2801
|
+
// Keep track of the executed builds
|
|
2802
|
+
const buildsExecuted = [];
|
|
2803
|
+
|
|
2804
|
+
// Don't clutter up with previous builds.
|
|
2805
|
+
await fs.remove(buildDir);
|
|
2806
|
+
await fs.mkdirp(buildDir);
|
|
2807
|
+
|
|
2808
|
+
// Static asset files in `public` subdirs of each module are copied
|
|
2809
|
+
// to the same relative path `/public/apos-frontend/namespace/modules/modulename`.
|
|
2810
|
+
// Inherited files are also copied, with the deepest subclass overriding in the
|
|
2811
|
+
// event of a conflict
|
|
2812
|
+
await moduleOverrides(`${bundleDir}/modules`, 'public');
|
|
2813
|
+
|
|
2814
|
+
for (const [ name, options ] of Object.entries(self.builds)) {
|
|
2815
|
+
// If the option is not present always rebuild everything...
|
|
2816
|
+
let rebuild = argv && !argv['check-apos-build'];
|
|
2817
|
+
// ...but only when not in a watcher mode
|
|
2818
|
+
if (detectChanges) {
|
|
2819
|
+
rebuild = shouldRebuildFor(name, options, sourceChanges);
|
|
2820
|
+
} else if (!rebuild) {
|
|
2821
|
+
let checkTimestamp = false;
|
|
2822
|
+
|
|
2823
|
+
// Only builds contributing to the apos admin UI (currently just "apos")
|
|
2824
|
+
// are candidates to skip the build simply because package-lock.json is
|
|
2825
|
+
// older than the bundle. All other builds frequently contain
|
|
2826
|
+
// project level code
|
|
2827
|
+
if (options.apos) {
|
|
2828
|
+
const bundleExists = await fs.pathExists(bundleDir);
|
|
2829
|
+
|
|
2830
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!bundleExists) {
|
|
2831
|
+
<span class="cstat-no" title="statement not covered" > rebuild = true;</span>
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!process.env.APOS_DEV) {
|
|
2835
|
+
checkTimestamp = await fs.pathExists(`${bundleDir}/${name}-build-timestamp.txt`);
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2838
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (checkTimestamp) {
|
|
2839
|
+
// If we have a UI build timestamp file compare against the app's
|
|
2840
|
+
// package.json modified time.
|
|
2841
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (await lockFileIsNewer(name)) {
|
|
2842
|
+
<span class="cstat-no" title="statement not covered" > rebuild = true;</span>
|
|
2843
|
+
}
|
|
2844
|
+
} else {
|
|
2845
|
+
<span class="cstat-no" title="statement not covered" > rebuild = true;</span>
|
|
2846
|
+
}
|
|
2847
|
+
} else {
|
|
2848
|
+
// Always redo the other builds,
|
|
2849
|
+
// which are quick and typically contain
|
|
2850
|
+
// project level code not detectable by
|
|
2851
|
+
// comparing package-lock timestamps
|
|
2852
|
+
rebuild = true;
|
|
2853
|
+
}
|
|
2854
|
+
}
|
|
2855
|
+
|
|
2856
|
+
if (rebuild) {
|
|
2857
|
+
await fs.mkdirp(bundleDir);
|
|
2858
|
+
await build({
|
|
2859
|
+
name,
|
|
2860
|
+
options
|
|
2861
|
+
});
|
|
2862
|
+
buildsExecuted.push(name);
|
|
2863
|
+
}
|
|
2864
|
+
}
|
|
2865
|
+
|
|
2866
|
+
// No need of deploy if in a watcher mode.
|
|
2867
|
+
// Also we return an array of build names that
|
|
2868
|
+
// have been triggered - this is required by the watcher
|
|
2869
|
+
// so that page refresh is issued only when needed.
|
|
2870
|
+
if (detectChanges) {
|
|
2871
|
+
// merge the scenes that have been built
|
|
2872
|
+
const scenes = [ ...new Set(buildsExecuted.map(name => self.builds[name].scenes).flat()) ];
|
|
2873
|
+
merge(scenes);
|
|
2874
|
+
return buildsExecuted;
|
|
2875
|
+
}
|
|
2876
|
+
|
|
2877
|
+
// Discover the set of unique asset scenes that exist (currently
|
|
2878
|
+
// just `public` and `apos`) by examining those specified as
|
|
2879
|
+
// targets for the various builds
|
|
2880
|
+
const scenes = [ ...new Set(Object.values(self.builds).map(options => options.scenes).flat()) ];
|
|
2881
|
+
|
|
2882
|
+
// enumerate public assets and include them in deployment if appropriate
|
|
2883
|
+
const publicAssets = glob.sync('modules/**/*', {
|
|
2884
|
+
cwd: bundleDir,
|
|
2885
|
+
mark: true
|
|
2886
|
+
}).filter(<span class="fstat-no" title="function not covered" >ma</span>tch => <span class="cstat-no" title="statement not covered" >!match.endsWith('/'))</span>;
|
|
2887
|
+
|
|
2888
|
+
const deployFiles = [
|
|
2889
|
+
...publicAssets,
|
|
2890
|
+
...merge(scenes),
|
|
2891
|
+
...getBundlesNames(self.extraBundles, self.options.es5)
|
|
2892
|
+
];
|
|
2893
|
+
|
|
2894
|
+
await deploy(deployFiles);
|
|
2895
|
+
|
|
2896
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_BUNDLE_ANALYZER) {
|
|
2897
|
+
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
2898
|
+
// Intentionally never resolve it, so the task never exits
|
|
2899
|
+
// and the UI stays up
|
|
2900
|
+
});
|
|
2901
|
+
}
|
|
2902
|
+
|
|
2903
|
+
async function moduleOverrides(modulesDir, source) {
|
|
2904
|
+
await fs.remove(modulesDir);
|
|
2905
|
+
await fs.mkdirp(modulesDir);
|
|
2906
|
+
let names = {};
|
|
2907
|
+
const directories = {};
|
|
2908
|
+
// Most other modules are not actually instantiated yet, but
|
|
2909
|
+
// we can access their metadata, which is sufficient
|
|
2910
|
+
for (const name of modulesToInstantiate) {
|
|
2911
|
+
const ancestorDirectories = [];
|
|
2912
|
+
const metadata = self.apos.synth.getMetadata(name);
|
|
2913
|
+
for (const entry of metadata.__meta.chain) {
|
|
2914
|
+
const effectiveName = entry.name.replace(/^my-/, '');
|
|
2915
|
+
names[effectiveName] = true;
|
|
2916
|
+
ancestorDirectories.push(entry.dirname);
|
|
2917
|
+
directories[effectiveName] = directories[effectiveName] || [];
|
|
2918
|
+
for (const dir of ancestorDirectories) {
|
|
2919
|
+
if (!directories[effectiveName].includes(dir)) {
|
|
2920
|
+
directories[effectiveName].push(dir);
|
|
2921
|
+
}
|
|
2922
|
+
}
|
|
2923
|
+
}
|
|
2924
|
+
}
|
|
2925
|
+
names = Object.keys(names);
|
|
2926
|
+
for (const name of names) {
|
|
2927
|
+
const moduleDir = `${modulesDir}/${name}`;
|
|
2928
|
+
for (const dir of directories[name]) {
|
|
2929
|
+
const srcDir = `${dir}/${source}`;
|
|
2930
|
+
if (fs.existsSync(srcDir)) {
|
|
2931
|
+
await fs.copy(srcDir, moduleDir);
|
|
2932
|
+
}
|
|
2933
|
+
}
|
|
2934
|
+
}
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2937
|
+
async function build({
|
|
2938
|
+
name, options
|
|
2939
|
+
}) {
|
|
2940
|
+
self.apos.util.log(req.t('apostrophe:assetTypeBuilding', {
|
|
2941
|
+
label: req.t(options.label)
|
|
2942
|
+
}));
|
|
2943
|
+
const modulesDir = `${buildDir}/${name}/modules`;
|
|
2944
|
+
const source = options.source || name;
|
|
2945
|
+
await moduleOverrides(modulesDir, `ui/${source}`);
|
|
2946
|
+
|
|
2947
|
+
let iconImports, componentImports, tiptapExtensionImports, appImports, indexJsImports, indexSassImports;
|
|
2948
|
+
if (options.apos) {
|
|
2949
|
+
iconImports = getIcons();
|
|
2950
|
+
componentImports = getImports(`${source}/components`, '*.vue', {
|
|
2951
|
+
registerComponents: true,
|
|
2952
|
+
importLastVersion: true
|
|
2953
|
+
});
|
|
2954
|
+
tiptapExtensionImports = getImports(`${source}/tiptap-extensions`, '*.js', { registerTiptapExtensions: true });
|
|
2955
|
+
appImports = getImports(`${source}/apps`, '*.js', {
|
|
2956
|
+
invokeApps: true,
|
|
2957
|
+
enumerateImports: true,
|
|
2958
|
+
importSuffix: 'App'
|
|
2959
|
+
});
|
|
2960
|
+
}
|
|
2961
|
+
|
|
2962
|
+
if (options.index) {
|
|
2963
|
+
indexJsImports = getImports(source, 'index.js', {
|
|
2964
|
+
invokeApps: true,
|
|
2965
|
+
enumerateImports: true,
|
|
2966
|
+
importSuffix: 'App',
|
|
2967
|
+
requireDefaultExport: true
|
|
2968
|
+
});
|
|
2969
|
+
indexSassImports = getImports(source, 'index.scss', {
|
|
2970
|
+
importSuffix: 'Stylesheet',
|
|
2971
|
+
enumerateImports: true
|
|
2972
|
+
});
|
|
2973
|
+
}
|
|
2974
|
+
|
|
2975
|
+
if (options.webpack) {
|
|
2976
|
+
const importFile = `${buildDir}/${name}-import.js`;
|
|
2977
|
+
|
|
2978
|
+
writeImportFile({
|
|
2979
|
+
importFile,
|
|
2980
|
+
prologue: options.prologue,
|
|
2981
|
+
icon: iconImports,
|
|
2982
|
+
components: componentImports,
|
|
2983
|
+
tiptap: tiptapExtensionImports,
|
|
2984
|
+
app: appImports,
|
|
2985
|
+
indexJs: indexJsImports,
|
|
2986
|
+
indexSass: indexSassImports
|
|
2987
|
+
});
|
|
2988
|
+
|
|
2989
|
+
const outputFilename = `${name}-build.js`;
|
|
2990
|
+
// Remove previous build artifacts, as some pipelines won't build all artifacts
|
|
2991
|
+
// if there is no input, and we don't want stale output in the bundle
|
|
2992
|
+
fs.removeSync(`${bundleDir}/${outputFilename}`);
|
|
2993
|
+
const cssPath = `${bundleDir}/${outputFilename}`.replace(/\.js$/, '.css');
|
|
2994
|
+
fs.removeSync(cssPath);
|
|
2995
|
+
const webpack = Promise.promisify(webpackModule);
|
|
2996
|
+
const webpackBaseConfig = require(`./lib/webpack/${name}/webpack.config`);
|
|
2997
|
+
|
|
2998
|
+
const webpackExtraBundles = writeBundlesImportFiles({
|
|
2999
|
+
name,
|
|
3000
|
+
buildDir,
|
|
3001
|
+
mainBundleName: outputFilename.replace('.js', ''),
|
|
3002
|
+
verifiedBundles: self.verifiedBundles,
|
|
3003
|
+
getImportFileOutput,
|
|
3004
|
+
writeImportFile
|
|
3005
|
+
});
|
|
3006
|
+
|
|
3007
|
+
const webpackInstanceConfig = webpackBaseConfig({
|
|
3008
|
+
importFile,
|
|
3009
|
+
modulesDir,
|
|
3010
|
+
outputPath: bundleDir,
|
|
3011
|
+
outputFilename,
|
|
3012
|
+
bundles: webpackExtraBundles
|
|
3013
|
+
}, self.apos);
|
|
3014
|
+
|
|
3015
|
+
const webpackInstanceConfigMerged = self.webpackExtensions
|
|
3016
|
+
? webpackMerge(webpackInstanceConfig, ...Object.values(self.webpackExtensions))
|
|
3017
|
+
: <span class="branch-1 cbranch-no" title="branch not covered" >webpackInstanceConfig;</span>
|
|
3018
|
+
|
|
3019
|
+
// Inject the cache location at the end - we need the merged
|
|
3020
|
+
const cacheMeta = await computeCacheMeta(name, webpackInstanceConfigMerged);
|
|
3021
|
+
webpackInstanceConfigMerged.cache.cacheLocation = cacheMeta.location;
|
|
3022
|
+
|
|
3023
|
+
const result = await webpack(webpackInstanceConfigMerged);
|
|
3024
|
+
await writeCacheMeta(name, cacheMeta);
|
|
3025
|
+
|
|
3026
|
+
if (result.compilation.errors.length) {
|
|
3027
|
+
// Throwing a string is appropriate in a command line task
|
|
3028
|
+
throw cleanErrors(result.toString('errors'));
|
|
3029
|
+
} else if (result.compilation.warnings.length) {
|
|
3030
|
+
self.apos.util.warn(result.toString('errors-warnings'));
|
|
3031
|
+
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_WEBPACK_VERBOSE) {
|
|
3032
|
+
<span class="cstat-no" title="statement not covered" > self.apos.util.info(result.toString('verbose'));</span>
|
|
3033
|
+
}
|
|
3034
|
+
if (fs.existsSync(cssPath)) {
|
|
3035
|
+
fs.writeFileSync(cssPath, self.filterCss(fs.readFileSync(cssPath, 'utf8'), {
|
|
3036
|
+
modulesPrefix: `${self.getAssetBaseUrl()}/modules`
|
|
3037
|
+
}));
|
|
3038
|
+
}
|
|
3039
|
+
if (options.apos) {
|
|
3040
|
+
const now = Date.now().toString();
|
|
3041
|
+
fs.writeFileSync(`${bundleDir}/${name}-build-timestamp.txt`, now);
|
|
3042
|
+
}
|
|
3043
|
+
} else {
|
|
3044
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (options.outputs.includes('js')) {
|
|
3045
|
+
// We do not use an import file here because import is not
|
|
3046
|
+
// an ES5 feature and it is contrary to the spirit of ES5 code
|
|
3047
|
+
// to force-fit that type of code. We do not mandate ES6 in
|
|
3048
|
+
// "public" code (loaded for logged-out users who might have
|
|
3049
|
+
// old browsers).
|
|
3050
|
+
//
|
|
3051
|
+
// Of course, developers can push an "public" asset that is
|
|
3052
|
+
// the output of an ES6 pipeline.
|
|
3053
|
+
const publicImports = getImports(name, '*.js');
|
|
3054
|
+
fs.writeFileSync(`${bundleDir}/${name}-build.js`,
|
|
3055
|
+
(((options.prologue || '') + '\n') || <span class="branch-1 cbranch-no" title="branch not covered" >'')</span> +
|
|
3056
|
+
publicImports.paths.map(path => {
|
|
3057
|
+
return fs.readFileSync(path, 'utf8');
|
|
3058
|
+
}).join('\n')
|
|
3059
|
+
);
|
|
3060
|
+
}
|
|
3061
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (options.outputs.includes('css')) {
|
|
3062
|
+
const publicImports = getImports(name, '*.css');
|
|
3063
|
+
fs.writeFileSync(`${bundleDir}/${name}-build.css`,
|
|
3064
|
+
publicImports.paths.map(path => {
|
|
3065
|
+
return self.filterCss(fs.readFileSync(path, 'utf8'), {
|
|
3066
|
+
modulesPrefix: `${self.getAssetBaseUrl()}/modules`
|
|
3067
|
+
});
|
|
3068
|
+
}).join('\n')
|
|
3069
|
+
);
|
|
3070
|
+
}
|
|
3071
|
+
}
|
|
3072
|
+
self.apos.util.log(req.t('apostrophe:assetTypeBuildComplete', {
|
|
3073
|
+
label: req.t(options.label)
|
|
3074
|
+
}));
|
|
3075
|
+
}
|
|
3076
|
+
|
|
3077
|
+
function writeImportFile ({
|
|
3078
|
+
importFile,
|
|
3079
|
+
prologue,
|
|
3080
|
+
icon,
|
|
3081
|
+
components,
|
|
3082
|
+
tiptap,
|
|
3083
|
+
app,
|
|
3084
|
+
indexJs,
|
|
3085
|
+
indexSass
|
|
3086
|
+
}) {
|
|
3087
|
+
fs.writeFileSync(importFile, (prologue || '') + stripIndent`
|
|
3088
|
+
${(icon && icon.importCode) || ''}
|
|
3089
|
+
${(icon && icon.registerCode) || ''}
|
|
3090
|
+
${(components && components.importCode) || ''}
|
|
3091
|
+
${(tiptap && tiptap.importCode) || ''}
|
|
3092
|
+
${(app && app.importCode) || ''}
|
|
3093
|
+
${(indexJs && indexJs.importCode) || ''}
|
|
3094
|
+
${(indexSass && indexSass.importCode) || ''}
|
|
3095
|
+
${(icon && icon.registerCode) || ''}
|
|
3096
|
+
${(components && components.registerCode) || ''}
|
|
3097
|
+
${(tiptap && tiptap.registerCode) || ''}
|
|
3098
|
+
` +
|
|
3099
|
+
(app ? stripIndent`
|
|
3100
|
+
setTimeout(() => {
|
|
3101
|
+
${app.invokeCode}
|
|
3102
|
+
}, 0);
|
|
3103
|
+
` : '') +
|
|
3104
|
+
// No delay on these, they expect to run early like ui/public code
|
|
3105
|
+
// and the first ones invoked set up expected stuff like apos.http
|
|
3106
|
+
(indexJs ? stripIndent`
|
|
3107
|
+
${indexJs.invokeCode}
|
|
3108
|
+
` : '')
|
|
3109
|
+
);
|
|
3110
|
+
}
|
|
3111
|
+
|
|
3112
|
+
function getIcons() {
|
|
3113
|
+
for (const name of modulesToInstantiate) {
|
|
3114
|
+
const metadata = self.apos.synth.getMetadata(name);
|
|
3115
|
+
// icons is an unparsed section, so getMetadata gives it back
|
|
3116
|
+
// to us as an object with a property for each class in the
|
|
3117
|
+
// inheritance tree, root first. Just keep merging in
|
|
3118
|
+
// icons from that
|
|
3119
|
+
for (const [ name, layer ] of Object.entries(metadata.icons)) {
|
|
3120
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if ((typeof layer) === 'function') {
|
|
3121
|
+
// We should not support invoking a function to define the icons
|
|
3122
|
+
// because the developer would expect `(self)` to behave
|
|
3123
|
+
// normally, and they won't during an asset build. So we only
|
|
3124
|
+
// accept a simple object with the icon mappings
|
|
3125
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Error in ${name} module: the "icons" property may not be a function.`);</span>
|
|
3126
|
+
}
|
|
3127
|
+
Object.assign(self.iconMap, layer || {});
|
|
3128
|
+
}
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3131
|
+
// Load global vue icon components.
|
|
3132
|
+
const output = {
|
|
3133
|
+
importCode: '',
|
|
3134
|
+
registerCode: ''
|
|
3135
|
+
};
|
|
3136
|
+
|
|
3137
|
+
for (const [ registerAs, importFrom ] of Object.entries(self.iconMap)) {
|
|
3138
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (importFrom.substring(0, 1) === '~') {
|
|
3139
|
+
<span class="cstat-no" title="statement not covered" > output.importCode += `import ${importFrom}Icon from '${importFrom.substring(1)}';\n`;</span>
|
|
3140
|
+
} else {
|
|
3141
|
+
output.importCode += `import ${importFrom}Icon from 'vue-material-design-icons/${importFrom}.vue';\n`;
|
|
3142
|
+
}
|
|
3143
|
+
output.registerCode += `Vue.component('${registerAs}', ${importFrom}Icon);\n`;
|
|
3144
|
+
}
|
|
3145
|
+
|
|
3146
|
+
return output;
|
|
3147
|
+
}
|
|
3148
|
+
|
|
3149
|
+
function merge(scenes) {
|
|
3150
|
+
return scenes.reduce((acc, scene) => {
|
|
3151
|
+
const jsModules = `${scene}-module-bundle.js`;
|
|
3152
|
+
const jsNoModules = `${scene}-nomodule-bundle.js`;
|
|
3153
|
+
const css = `${scene}-bundle.css`;
|
|
3154
|
+
|
|
3155
|
+
writeSceneBundle({
|
|
3156
|
+
scene,
|
|
3157
|
+
filePath: jsModules,
|
|
3158
|
+
jsCondition: 'module'
|
|
3159
|
+
});
|
|
3160
|
+
writeSceneBundle({
|
|
3161
|
+
scene,
|
|
3162
|
+
filePath: jsNoModules,
|
|
3163
|
+
jsCondition: 'nomodule'
|
|
3164
|
+
});
|
|
3165
|
+
writeSceneBundle({
|
|
3166
|
+
scene,
|
|
3167
|
+
filePath: css,
|
|
3168
|
+
checkForFile: true
|
|
3169
|
+
});
|
|
3170
|
+
|
|
3171
|
+
return [
|
|
3172
|
+
...acc,
|
|
3173
|
+
jsModules,
|
|
3174
|
+
jsNoModules,
|
|
3175
|
+
css
|
|
3176
|
+
];
|
|
3177
|
+
}, []);
|
|
3178
|
+
}
|
|
3179
|
+
|
|
3180
|
+
function writeSceneBundle ({
|
|
3181
|
+
scene, filePath, jsCondition, checkForFile = false
|
|
3182
|
+
}) {
|
|
3183
|
+
const [ _ext, fileExt ] = filePath.match(/\.(\w+)$/);
|
|
3184
|
+
const filterBuilds = ({
|
|
3185
|
+
scenes, outputs, condition
|
|
3186
|
+
}) => {
|
|
3187
|
+
return outputs.includes(fileExt) &&
|
|
3188
|
+
((!condition || !jsCondition) || condition === jsCondition) &&
|
|
3189
|
+
scenes.includes(scene);
|
|
3190
|
+
};
|
|
3191
|
+
|
|
3192
|
+
const filesContent = Object.entries(self.builds)
|
|
3193
|
+
.filter(([ _, options ]) => filterBuilds(options))
|
|
3194
|
+
.map(([ name ]) => {
|
|
3195
|
+
const file = `${bundleDir}/${name}-build.${fileExt}`;
|
|
3196
|
+
const readFile = (n, f) => `/* BUILD: ${n} */\n${fs.readFileSync(f, 'utf8')}`;
|
|
3197
|
+
|
|
3198
|
+
if (checkForFile) {
|
|
3199
|
+
return fs.existsSync(file)
|
|
3200
|
+
? readFile(name, file)
|
|
3201
|
+
: '';
|
|
3202
|
+
}
|
|
3203
|
+
|
|
3204
|
+
return readFile(name, file);
|
|
3205
|
+
}).join('\n');
|
|
3206
|
+
|
|
3207
|
+
fs.writeFileSync(`${bundleDir}/${filePath}`, filesContent);
|
|
3208
|
+
}
|
|
3209
|
+
|
|
3210
|
+
// If NODE_ENV is production, this function will copy the given
|
|
3211
|
+
// array of asset files from `${bundleDir}/${file}` to
|
|
3212
|
+
// the same relative location in the appropriate release subdirectory in
|
|
3213
|
+
// `/public/apos-frontend/releases`, or in `/apos-frontend/releases` in
|
|
3214
|
+
// uploadfs if `APOS_UPLOADFS_ASSETS` is present.
|
|
3215
|
+
//
|
|
3216
|
+
// If NODE_ENV is not production this function does nothing and
|
|
3217
|
+
// the assets are served directly from `/public/apos-frontend/${file}`.
|
|
3218
|
+
//
|
|
3219
|
+
// The namespace (e.g. default) should be part of each filename given.
|
|
3220
|
+
// A leading slash should NOT be passed.
|
|
3221
|
+
|
|
3222
|
+
async function deploy(files) {
|
|
3223
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
3224
|
+
return;
|
|
3225
|
+
}
|
|
3226
|
+
let copyIn;
|
|
3227
|
+
let releaseDir;
|
|
3228
|
+
const releaseId = self.getReleaseId();
|
|
3229
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.APOS_UPLOADFS_ASSETS) {
|
|
3230
|
+
// The right choice if uploadfs is mapped to S3, Azure, etc.,
|
|
3231
|
+
// not the local filesystem
|
|
3232
|
+
<span class="cstat-no" title="statement not covered" > copyIn = require('util').promisify(self.uploadfs.copyIn);</span>
|
|
3233
|
+
<span class="cstat-no" title="statement not covered" > releaseDir = `/apos-frontend/releases/${releaseId}/${namespace}`;</span>
|
|
3234
|
+
} else {
|
|
3235
|
+
// The right choice with Docker if uploadfs is just the local filesystem
|
|
3236
|
+
// mapped to a volume (a Docker build step can't access that)
|
|
3237
|
+
copyIn = fsCopyIn;
|
|
3238
|
+
releaseDir = `${self.apos.rootDir}/public/apos-frontend/releases/${releaseId}/${namespace}`;
|
|
3239
|
+
await fs.mkdirp(releaseDir);
|
|
3240
|
+
}
|
|
3241
|
+
for (const file of files) {
|
|
3242
|
+
const src = `${bundleDir}/${file}`;
|
|
3243
|
+
await copyIn(src, `${releaseDir}/${file}`);
|
|
3244
|
+
await fs.remove(src);
|
|
3245
|
+
}
|
|
3246
|
+
}
|
|
3247
|
+
|
|
3248
|
+
async function fsCopyIn(from, to) {
|
|
3249
|
+
const base = path.dirname(to);
|
|
3250
|
+
await fs.mkdirp(base);
|
|
3251
|
+
return fs.copyFile(from, to);
|
|
3252
|
+
}
|
|
3253
|
+
|
|
3254
|
+
function getImports(folder, pattern, options = {}) {
|
|
3255
|
+
let components = [];
|
|
3256
|
+
const seen = {};
|
|
3257
|
+
for (const name of modulesToInstantiate) {
|
|
3258
|
+
const metadata = self.apos.synth.getMetadata(name);
|
|
3259
|
+
for (const entry of metadata.__meta.chain) {
|
|
3260
|
+
if (seen[entry.dirname]) {
|
|
3261
|
+
continue;
|
|
3262
|
+
}
|
|
3263
|
+
components = components.concat(glob.sync(`${entry.dirname}/ui/${folder}/${pattern}`));
|
|
3264
|
+
seen[entry.dirname] = true;
|
|
3265
|
+
}
|
|
3266
|
+
}
|
|
3267
|
+
|
|
3268
|
+
if (options.importLastVersion) {
|
|
3269
|
+
// Reverse the list so we can easily find the last configured import
|
|
3270
|
+
// of a given component, allowing "improve" modules to win over
|
|
3271
|
+
// the originals when shipping an override of a Vue component
|
|
3272
|
+
// with the same name, and filter out earlier versions
|
|
3273
|
+
components.reverse();
|
|
3274
|
+
const seen = new Set();
|
|
3275
|
+
components = components.filter(component => {
|
|
3276
|
+
const name = getComponentName(component, options);
|
|
3277
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (seen.has(name)) {
|
|
3278
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
3279
|
+
}
|
|
3280
|
+
seen.add(name);
|
|
3281
|
+
return true;
|
|
3282
|
+
});
|
|
3283
|
+
// Put the components back in their original order
|
|
3284
|
+
components.reverse();
|
|
3285
|
+
}
|
|
3286
|
+
|
|
3287
|
+
return getImportFileOutput(components, options);
|
|
3288
|
+
}
|
|
3289
|
+
|
|
3290
|
+
function getImportFileOutput (components, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
3291
|
+
const output = {
|
|
3292
|
+
importCode: '',
|
|
3293
|
+
registerCode: '',
|
|
3294
|
+
invokeCode: '',
|
|
3295
|
+
paths: []
|
|
3296
|
+
};
|
|
3297
|
+
|
|
3298
|
+
components.forEach((component, i) => {
|
|
3299
|
+
if (options.requireDefaultExport) {
|
|
3300
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!fs.readFileSync(component, 'utf8').match(/export[\s\n]+default/)) {
|
|
3301
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
|
|
3302
|
+
The file ${component} does not have a default export.
|
|
3303
|
+
|
|
3304
|
+
Any ui/src/index.js file that does not have a function as
|
|
3305
|
+
its default export will cause the build to fail in production.
|
|
3306
|
+
`);
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
const jsFilename = JSON.stringify(component);
|
|
3310
|
+
const name = getComponentName(component, options, i);
|
|
3311
|
+
const jsName = JSON.stringify(name);
|
|
3312
|
+
const importCode = `
|
|
3313
|
+
import ${name}${options.importSuffix || ''} from ${jsFilename};
|
|
3314
|
+
`;
|
|
3315
|
+
|
|
3316
|
+
output.paths.push(component);
|
|
3317
|
+
output.importCode += `${importCode}\n`;
|
|
3318
|
+
|
|
3319
|
+
if (options.registerComponents) {
|
|
3320
|
+
output.registerCode += `Vue.component(${jsName}, ${name});\n`;
|
|
3321
|
+
}
|
|
3322
|
+
|
|
3323
|
+
if (options.registerTiptapExtensions) {
|
|
3324
|
+
output.registerCode += stripIndent`
|
|
3325
|
+
apos.tiptapExtensions = apos.tiptapExtensions || [];
|
|
3326
|
+
apos.tiptapExtensions.push(${name});
|
|
3327
|
+
`;
|
|
3328
|
+
}
|
|
3329
|
+
if (options.invokeApps) {
|
|
3330
|
+
output.invokeCode += `${name}${options.importSuffix || ''}();\n`;
|
|
3331
|
+
}
|
|
3332
|
+
});
|
|
3333
|
+
|
|
3334
|
+
return output;
|
|
3335
|
+
}
|
|
3336
|
+
|
|
3337
|
+
async function lockFileIsNewer(name) {
|
|
3338
|
+
const timestamp = fs.readFileSync(`${bundleDir}/${name}-build-timestamp.txt`, 'utf8');
|
|
3339
|
+
let pkgStats;
|
|
3340
|
+
const packageLock = await findPackageLock();
|
|
3341
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (packageLock) {
|
|
3342
|
+
pkgStats = await fs.stat(packageLock);
|
|
3343
|
+
}
|
|
3344
|
+
|
|
3345
|
+
const pkgTimestamp = pkgStats && pkgStats.mtimeMs;
|
|
3346
|
+
|
|
3347
|
+
return pkgTimestamp > parseInt(timestamp);
|
|
3348
|
+
}
|
|
3349
|
+
|
|
3350
|
+
async function findPackageLock() {
|
|
3351
|
+
const packageLockPath = path.join(self.apos.npmRootDir, 'package-lock.json');
|
|
3352
|
+
const yarnPath = path.join(self.apos.npmRootDir, 'yarn.lock');
|
|
3353
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (await fs.pathExists(packageLockPath)) {
|
|
3354
|
+
return packageLockPath;
|
|
3355
|
+
} else <span class="cstat-no" title="statement not covered" >if (await fs.pathExists(yarnPath)) {</span>
|
|
3356
|
+
<span class="cstat-no" title="statement not covered" > return yarnPath;</span>
|
|
3357
|
+
} else {
|
|
3358
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
3359
|
+
}
|
|
3360
|
+
}
|
|
3361
|
+
|
|
3362
|
+
function getComponentName(component, { enumerateImports } = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> i) {
|
|
3363
|
+
return path
|
|
3364
|
+
.basename(component)
|
|
3365
|
+
.replace(/-/g, '_')
|
|
3366
|
+
.replace(/\.\w+/, '') + (enumerateImports ? `_${i}` : '');
|
|
3367
|
+
}
|
|
3368
|
+
|
|
3369
|
+
function cleanErrors(errors) {
|
|
3370
|
+
// Dev experience: remove confusing and inaccurate webpack warning about module loaders
|
|
3371
|
+
// when straightforward JS parse errors occur, stackoverflow is full of people
|
|
3372
|
+
// confused by this
|
|
3373
|
+
return errors.replace(/(ERROR in[\s\S]*?Module parse failed[\s\S]*)You may need an appropriate loader.*/, '$1');
|
|
3374
|
+
}
|
|
3375
|
+
|
|
3376
|
+
// A (CPU intensive) webpack cache helper to compute a hash and build paths.
|
|
3377
|
+
// Cache the result when possible.
|
|
3378
|
+
// The base cache path is by default `data/temp/webpack-cache`
|
|
3379
|
+
// but it can be overridden by an APOS_ASSET_CACHE environment.
|
|
3380
|
+
// In order to compute an accurate hash, this helper needs
|
|
3381
|
+
// the final, merged webpack configuration.
|
|
3382
|
+
async function computeCacheMeta(name, webpackConfig) {
|
|
3383
|
+
const cacheBase = self.getCacheBasePath();
|
|
3384
|
+
|
|
3385
|
+
if (!packageLockContentCached) {
|
|
3386
|
+
const packageLock = await findPackageLock();
|
|
3387
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (packageLock === false) {
|
|
3388
|
+
// this should happen only when testing and
|
|
3389
|
+
// we don't want to break all non-core module tests
|
|
3390
|
+
<span class="cstat-no" title="statement not covered" > packageLockContentCached = 'none';</span>
|
|
3391
|
+
} else {
|
|
3392
|
+
packageLockContentCached = await fs.readFile(packageLock, 'utf8');
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
|
|
3396
|
+
// Plugins can output timestamps or other random information as
|
|
3397
|
+
// configuration (e.g. StylelintWebpackPlugin). As we don't have
|
|
3398
|
+
// control over plugins, we need to remove their configuration values.
|
|
3399
|
+
// We keep only the plugin name and config keys sorted list.
|
|
3400
|
+
// Additionally plugins are sorted by their constructor names.
|
|
3401
|
+
// A shallow clone is enough to avoid modification of the original
|
|
3402
|
+
// config.
|
|
3403
|
+
const config = { ...webpackConfig };
|
|
3404
|
+
config.plugins = (config.plugins || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>.map(p => {
|
|
3405
|
+
const result = [];
|
|
3406
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (p.constructor && p.constructor.name) {
|
|
3407
|
+
result.push(p.constructor.name);
|
|
3408
|
+
}
|
|
3409
|
+
const keys = Object.keys(p);
|
|
3410
|
+
keys.sort();
|
|
3411
|
+
result.push(...keys);
|
|
3412
|
+
return result;
|
|
3413
|
+
});
|
|
3414
|
+
config.plugins.sort((a, b) => (a[0] || <span class="branch-1 cbranch-no" title="branch not covered" >'')</span>.localeCompare(b[0]));
|
|
3415
|
+
const configString = util.inspect(config, {
|
|
3416
|
+
depth: 10,
|
|
3417
|
+
compact: true,
|
|
3418
|
+
breakLength: Infinity
|
|
3419
|
+
});
|
|
3420
|
+
const hash = self.apos.util.md5(
|
|
3421
|
+
`${self.getNamespace()}:${name}:${packageLockContentCached}:${configString}`
|
|
3422
|
+
);
|
|
3423
|
+
const location = path.resolve(cacheBase, hash);
|
|
3424
|
+
|
|
3425
|
+
return {
|
|
3426
|
+
base: cacheBase,
|
|
3427
|
+
hash,
|
|
3428
|
+
location
|
|
3429
|
+
};
|
|
3430
|
+
}
|
|
3431
|
+
|
|
3432
|
+
// Add .apos, useful for debugging, testing and cache invalidation.
|
|
3433
|
+
// It also keeps in sync the modified time of the cache folder.
|
|
3434
|
+
async function writeCacheMeta(name, cacheMeta) {
|
|
3435
|
+
try {
|
|
3436
|
+
const cachePath = path.join(cacheMeta.location, '.apos');
|
|
3437
|
+
const lastModified = new Date();
|
|
3438
|
+
await fs.writeFile(
|
|
3439
|
+
cachePath,
|
|
3440
|
+
`${lastModified.toISOString()} ${self.getNamespace()}:${name}`,
|
|
3441
|
+
'utf8'
|
|
3442
|
+
);
|
|
3443
|
+
// should be the same as the meta
|
|
3444
|
+
await fs.utimes(cachePath, lastModified, lastModified);
|
|
3445
|
+
} catch (e) {
|
|
3446
|
+
// Build probably failed, path is missing, ignore
|
|
3447
|
+
}
|
|
3448
|
+
}
|
|
3449
|
+
|
|
3450
|
+
// Given a set of changes, leave only those that belong to an active
|
|
3451
|
+
// Apostrophe module. This would avoid unnecessary builds for non-active
|
|
3452
|
+
// watched files (e.g. in multi instance mode).
|
|
3453
|
+
// It's an expensive brute force O(n^2), so we do it once for all builds
|
|
3454
|
+
// and we rely on the fact that mass changes happen rarely.
|
|
3455
|
+
function filterValidChanges(all, modules) {
|
|
3456
|
+
return all.filter(c => {
|
|
3457
|
+
for (const module of modules) {
|
|
3458
|
+
if (c.includes(module)) {
|
|
3459
|
+
return true;
|
|
3460
|
+
}
|
|
3461
|
+
}
|
|
3462
|
+
return false;
|
|
3463
|
+
});
|
|
3464
|
+
}
|
|
3465
|
+
|
|
3466
|
+
// Detect if a build should be executed based on the changed
|
|
3467
|
+
// paths. This function is invoked only when the appropriate `argv.changes`
|
|
3468
|
+
// is passed to the task.
|
|
3469
|
+
function shouldRebuildFor(buildName, buildOptions, changes) {
|
|
3470
|
+
const name = buildOptions.source || buildName;
|
|
3471
|
+
const id = `/ui/${name}/`;
|
|
3472
|
+
for (const change of changes) {
|
|
3473
|
+
if (change.includes(id)) {
|
|
3474
|
+
return true;
|
|
3475
|
+
}
|
|
3476
|
+
}
|
|
3477
|
+
return false;
|
|
3478
|
+
}
|
|
3479
|
+
}
|
|
3480
|
+
},
|
|
3481
|
+
|
|
3482
|
+
'clear-cache': {
|
|
3483
|
+
usage: 'Clear build cache',
|
|
3484
|
+
afterModuleInit: true,
|
|
3485
|
+
async task(argv) {
|
|
3486
|
+
const cacheBaseDir = self.getCacheBasePath();
|
|
3487
|
+
|
|
3488
|
+
await fs.emptyDir(cacheBaseDir);
|
|
3489
|
+
self.apos.util.log(
|
|
3490
|
+
self.apos.task.getReq().t('apostrophe:assetWebpackCacheCleared')
|
|
3491
|
+
);
|
|
3492
|
+
}
|
|
3493
|
+
}
|
|
3494
|
+
};
|
|
3495
|
+
},
|
|
3496
|
+
middleware(self) {
|
|
3497
|
+
return {
|
|
3498
|
+
serveStaticAssets: {
|
|
3499
|
+
before: '@apostrophecms/express',
|
|
3500
|
+
middleware: express.static(self.apos.rootDir + '/public', self.options.static || {})
|
|
3501
|
+
}
|
|
3502
|
+
};
|
|
3503
|
+
},
|
|
3504
|
+
methods(self) {
|
|
3505
|
+
return {
|
|
3506
|
+
async initUploadfs() {
|
|
3507
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (self.options.uploadfs) {
|
|
3508
|
+
<span class="cstat-no" title="statement not covered" > self.uploadfs = await self.apos.modules['@apostrophecms/uploadfs'].getInstance(self.options.uploadfs);</span>
|
|
3509
|
+
} else {
|
|
3510
|
+
self.uploadfs = self.apos.uploadfs;
|
|
3511
|
+
}
|
|
3512
|
+
},
|
|
3513
|
+
stylesheetsHelper(when) {
|
|
3514
|
+
return '';
|
|
3515
|
+
},
|
|
3516
|
+
scriptsHelper(when) {
|
|
3517
|
+
return '';
|
|
3518
|
+
},
|
|
3519
|
+
shouldRefreshOnRestart() {
|
|
3520
|
+
return self.options.refreshOnRestart && (<span class="branch-1 cbranch-no" title="branch not covered" >process.env.NODE_ENV !== 'production')</span>;
|
|
3521
|
+
},
|
|
3522
|
+
// Returns a unique identifier for the current version of the
|
|
3523
|
+
// codebase (the current release). Checks for a release-id file
|
|
3524
|
+
// (ideal for webpack which can create such a file in a build step),
|
|
3525
|
+
// HEROKU_RELEASE_VERSION (for Heroku), PLATFORM_TREE_ID (for platform.sh),
|
|
3526
|
+
// APOS_RELEASE_ID (for custom cases), a directory component containing at
|
|
3527
|
+
// least YYYY-MM-DD (for stagecoach), and finally the git hash, if the project
|
|
3528
|
+
// root is a git checkout (useful when debugging production builds locally,
|
|
3529
|
+
// and some people do deploy this way).
|
|
3530
|
+
//
|
|
3531
|
+
// If none of these are found, throws an error demanding that APOS_RELEASE_ID
|
|
3532
|
+
// or release-id be set up.
|
|
3533
|
+
//
|
|
3534
|
+
// TODO: auto-detect more cases, such as Azure app service. In the meantime
|
|
3535
|
+
// you can set APOS_RELEASE_ID from whatever you have before running Apostrophe.
|
|
3536
|
+
//
|
|
3537
|
+
// The identifier should be reasonably short and must be URL-friendly. It must
|
|
3538
|
+
// be available both when running the asset build task and when running the site.
|
|
3539
|
+
getReleaseId() {
|
|
3540
|
+
const viaEnv = process.env.APOS_RELEASE_ID || process.env.HEROKU_RELEASE_VERSION || process.env.PLATFORM_TREE_ID;
|
|
3541
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (viaEnv) {
|
|
3542
|
+
<span class="cstat-no" title="statement not covered" > return viaEnv;</span>
|
|
3543
|
+
}
|
|
3544
|
+
try {
|
|
3545
|
+
return fs.readFileSync(`${self.apos.rootDir}/release-id`, 'utf8').trim();
|
|
3546
|
+
} catch (e) {
|
|
3547
|
+
// OK, consider fallbacks instead
|
|
3548
|
+
}
|
|
3549
|
+
const realPath = fs.realpathSync(self.apos.rootDir);
|
|
3550
|
+
// Stagecoach and similar: find a release timestamp in the path and use that
|
|
3551
|
+
const matches = realPath.match(/\/(\d\d\d\d-\d\d-\d\d[^/]+)/);
|
|
3552
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (matches) {
|
|
3553
|
+
<span class="cstat-no" title="statement not covered" > return matches[1];</span>
|
|
3554
|
+
}
|
|
3555
|
+
try {
|
|
3556
|
+
const fromGit = require('child_process').execSync('git rev-parse --short HEAD', {
|
|
3557
|
+
encoding: 'utf8'
|
|
3558
|
+
}).trim();
|
|
3559
|
+
return fromGit;
|
|
3560
|
+
} catch (e) {
|
|
3561
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(stripIndent`</span>
|
|
3562
|
+
When running in production you must set the APOS_RELEASE_ID
|
|
3563
|
+
environment variable to a short, unique string identifying this
|
|
3564
|
+
particular release of the application, or write it to the file
|
|
3565
|
+
release-id. Apostrophe will also autodetect HEROKU_RELEASE_VERSION,
|
|
3566
|
+
PLATFORM_TREE_ID or the current git commit if your deployment is a
|
|
3567
|
+
git checkout.
|
|
3568
|
+
`);
|
|
3569
|
+
}
|
|
3570
|
+
},
|
|
3571
|
+
// Can be overridden to namespace several asset bundles
|
|
3572
|
+
// in a single codebase.
|
|
3573
|
+
//
|
|
3574
|
+
// Env var option is for unit testing only
|
|
3575
|
+
getNamespace() {
|
|
3576
|
+
return process.env.APOS_DEBUG_NAMESPACE || 'default';
|
|
3577
|
+
},
|
|
3578
|
+
getAssetBaseUrl() {
|
|
3579
|
+
const namespace = self.getNamespace();
|
|
3580
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (process.env.NODE_ENV === 'production') {
|
|
3581
|
+
const releaseId = <span class="cstat-no" title="statement not covered" >self.getReleaseId();</span>
|
|
3582
|
+
const releaseDir = <span class="cstat-no" title="statement not covered" >`/apos-frontend/releases/${releaseId}/${namespace}`;</span>
|
|
3583
|
+
<span class="cstat-no" title="statement not covered" > if (process.env.APOS_UPLOADFS_ASSETS) {</span>
|
|
3584
|
+
<span class="cstat-no" title="statement not covered" > return `${self.uploadfs.getUrl()}${releaseDir}`;</span>
|
|
3585
|
+
} else {
|
|
3586
|
+
<span class="cstat-no" title="statement not covered" > return releaseDir;</span>
|
|
3587
|
+
}
|
|
3588
|
+
} else {
|
|
3589
|
+
return `/apos-frontend/${namespace}`;
|
|
3590
|
+
}
|
|
3591
|
+
},
|
|
3592
|
+
getCacheBasePath() {
|
|
3593
|
+
return process.env.APOS_ASSET_CACHE ||
|
|
3594
|
+
path.join(self.apos.rootDir, 'data/temp/webpack-cache');
|
|
3595
|
+
},
|
|
3596
|
+
|
|
3597
|
+
// Override to set externally a build watcher (a `chokidar` instance).
|
|
3598
|
+
// This method will be invoked only if/when needed.
|
|
3599
|
+
// Example:
|
|
3600
|
+
// ```js
|
|
3601
|
+
// registerBuildWatcher() {
|
|
3602
|
+
// self.buildWatcher = chokidar.watch(pathsToWatch, {
|
|
3603
|
+
// cwd: self.apos.rootDir,
|
|
3604
|
+
// ignoreInitial: true
|
|
3605
|
+
// });
|
|
3606
|
+
// }
|
|
3607
|
+
// ```
|
|
3608
|
+
registerBuildWatcher() {
|
|
3609
|
+
self.buildWatcher = null;
|
|
3610
|
+
},
|
|
3611
|
+
|
|
3612
|
+
// Run build task automatically when appropriate.
|
|
3613
|
+
// If `changes` is provided (array of modified files/folders, relative
|
|
3614
|
+
// to the application root), this method will return the result of the
|
|
3615
|
+
// build task (array of builds that have been triggered by the changes).
|
|
3616
|
+
// If `changes` is not provided (falsy value), a boolean will be returned,
|
|
3617
|
+
// indicating if the build task has been invoked or not.
|
|
3618
|
+
// IMPORTANT: Be cautious when changing the return type behavior.
|
|
3619
|
+
// The build watcher initialization (event triggered) depends on a Boolean value,
|
|
3620
|
+
// and the rebuild handler (triggered by the build watcher on
|
|
3621
|
+
// detected change) depends on an Array value.
|
|
3622
|
+
async autorunUiBuildTask(changes) {
|
|
3623
|
+
let result = changes ? [] : false;
|
|
3624
|
+
let _changes;
|
|
3625
|
+
if (
|
|
3626
|
+
// Do not automatically build the UI if we're starting from a task
|
|
3627
|
+
!self.apos.isTask() &&
|
|
3628
|
+
// Or if we're in production
|
|
3629
|
+
process.env.NODE_ENV !== 'production' &&
|
|
3630
|
+
// Or if we've set an app option to skip the auto build
|
|
3631
|
+
self.apos.options.autoBuild !== false
|
|
3632
|
+
) {
|
|
3633
|
+
checkModulesWebpackConfig(self.apos.modules, self.apos.task.getReq().t);
|
|
3634
|
+
// If starting up normally, run the build task, checking if we
|
|
3635
|
+
// really need to update the apos build
|
|
3636
|
+
if (changes) {
|
|
3637
|
+
// Important: don't pass empty string, it will cause the task
|
|
3638
|
+
// to enter selective build mode and do nothing. Undefined is OK.
|
|
3639
|
+
_changes = changes.join(',');
|
|
3640
|
+
}
|
|
3641
|
+
const buildsTriggered = await self.apos.task.invoke('@apostrophecms/asset:build', {
|
|
3642
|
+
'check-apos-build': true,
|
|
3643
|
+
changes: _changes
|
|
3644
|
+
});
|
|
3645
|
+
result = _changes ? buildsTriggered : true;
|
|
3646
|
+
}
|
|
3647
|
+
return result;
|
|
3648
|
+
},
|
|
3649
|
+
|
|
3650
|
+
// The rebuild handler triggered (debounced) by the build watcher.
|
|
3651
|
+
// The `changes` argument is a reference to a central pool of changes.
|
|
3652
|
+
// It contains relative to the application root file paths.
|
|
3653
|
+
// The pool is being exhausted before triggering the build task.
|
|
3654
|
+
// Array manipulations are sync only, so no race condition is possible.
|
|
3655
|
+
// `rebuildCallback` is used for testing and debug purposes. It allows
|
|
3656
|
+
// access to the changes processed by the build task,
|
|
3657
|
+
// the new restartId and the build names that the changes have triggered.
|
|
3658
|
+
// This handler has no watcher dependencies and it's safe to be invoked
|
|
3659
|
+
// by any code base.
|
|
3660
|
+
async rebuild(changes, rebuildCallback) {
|
|
3661
|
+
rebuildCallback = typeof rebuildCallback === 'function'
|
|
3662
|
+
? rebuildCallback
|
|
3663
|
+
: <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >()</span> => {};</span>
|
|
3664
|
+
const result = {
|
|
3665
|
+
changes: [],
|
|
3666
|
+
restartId: self.restartId,
|
|
3667
|
+
builds: []
|
|
3668
|
+
};
|
|
3669
|
+
|
|
3670
|
+
const pulledChanges = [];
|
|
3671
|
+
let change = changes.pop();
|
|
3672
|
+
while (change) {
|
|
3673
|
+
pulledChanges.push(change);
|
|
3674
|
+
change = changes.pop();
|
|
3675
|
+
}
|
|
3676
|
+
// No changes - should never happen.
|
|
3677
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (pulledChanges.length === 0) {
|
|
3678
|
+
<span class="cstat-no" title="statement not covered" > return rebuildCallback(result);</span>
|
|
3679
|
+
}
|
|
3680
|
+
try {
|
|
3681
|
+
const buildsTriggered = await self.autorunUiBuildTask(pulledChanges);
|
|
3682
|
+
if (buildsTriggered.length > 0) {
|
|
3683
|
+
self.restartId = self.apos.util.generateId();
|
|
3684
|
+
}
|
|
3685
|
+
return rebuildCallback({
|
|
3686
|
+
changes: pulledChanges,
|
|
3687
|
+
restartId: self.restartId,
|
|
3688
|
+
builds: buildsTriggered
|
|
3689
|
+
});
|
|
3690
|
+
} catch (e) {
|
|
3691
|
+
// The build error is detailed enough, no message
|
|
3692
|
+
// on our end.
|
|
3693
|
+
self.apos.util.error(e);
|
|
3694
|
+
}
|
|
3695
|
+
|
|
3696
|
+
rebuildCallback(result);
|
|
3697
|
+
},
|
|
3698
|
+
|
|
3699
|
+
// Start watching assets from `modules/` and
|
|
3700
|
+
// every symlinked package found in `node_modules/`.
|
|
3701
|
+
// `rebuildCallback` is invoked with queue length argument
|
|
3702
|
+
// on actual build attempt only.
|
|
3703
|
+
// It's there mainly for testing and debugging purposes.
|
|
3704
|
+
async watchUiAndRebuild(rebuildCallback) {
|
|
3705
|
+
if (!self.buildWatcherEnable) {
|
|
3706
|
+
return;
|
|
3707
|
+
}
|
|
3708
|
+
// Allow custom watcher registration
|
|
3709
|
+
self.registerBuildWatcher();
|
|
3710
|
+
const rootDir = self.apos.rootDir;
|
|
3711
|
+
// chokidar may invoke ready event multiple times,
|
|
3712
|
+
// we want one "watch enabled" message.
|
|
3713
|
+
let loggedOnce = false;
|
|
3714
|
+
const logOnce = (...msg) => {
|
|
3715
|
+
if (!loggedOnce) {
|
|
3716
|
+
self.apos.util.log(...msg);
|
|
3717
|
+
loggedOnce = true;
|
|
3718
|
+
}
|
|
3719
|
+
};
|
|
3720
|
+
const error = self.apos.util.error;
|
|
3721
|
+
const queue = [];
|
|
3722
|
+
let queueLength = 0;
|
|
3723
|
+
let queueRunning = false;
|
|
3724
|
+
// The pool of changes - it HAS to be exhausted by the rebuild handler
|
|
3725
|
+
// or we'll end up with a memory leak in development.
|
|
3726
|
+
const changesPool = [];
|
|
3727
|
+
|
|
3728
|
+
const debounceRebuild = _.debounce(chain, self.buildWatcherDebounceMs, {
|
|
3729
|
+
leading: false,
|
|
3730
|
+
trailing: true
|
|
3731
|
+
});
|
|
3732
|
+
const addChangeAndDebounceRebuild = (fileOrDir) => {
|
|
3733
|
+
changesPool.push(fileOrDir);
|
|
3734
|
+
return debounceRebuild();
|
|
3735
|
+
};
|
|
3736
|
+
|
|
3737
|
+
if (!self.buildWatcher) {
|
|
3738
|
+
const symLinkModules = await findNodeModulesSymlinks(rootDir);
|
|
3739
|
+
const watchDirs = [
|
|
3740
|
+
'./modules/**/ui/apos/**',
|
|
3741
|
+
'./modules/**/ui/src/**',
|
|
3742
|
+
'./modules/**/ui/public/**',
|
|
3743
|
+
...symLinkModules.reduce(
|
|
3744
|
+
(prev, m) => [
|
|
3745
|
+
...prev,
|
|
3746
|
+
`./node_modules/${m}/ui/apos/**`,
|
|
3747
|
+
`./node_modules/${m}/ui/src/**`,
|
|
3748
|
+
`./node_modules/${m}/ui/public/**`,
|
|
3749
|
+
`./node_modules/${m}/modules/**/ui/apos/**`,
|
|
3750
|
+
`./node_modules/${m}/modules/**/ui/src/**`,
|
|
3751
|
+
`./node_modules/${m}/modules/**/ui/public/**`
|
|
3752
|
+
],
|
|
3753
|
+
[]
|
|
3754
|
+
)
|
|
3755
|
+
];
|
|
3756
|
+
self.buildWatcher = chokidar.watch(watchDirs, {
|
|
3757
|
+
cwd: rootDir,
|
|
3758
|
+
ignoreInitial: true
|
|
3759
|
+
});
|
|
3760
|
+
}
|
|
3761
|
+
|
|
3762
|
+
self.buildWatcher
|
|
3763
|
+
.on('add', addChangeAndDebounceRebuild)
|
|
3764
|
+
.on('change', addChangeAndDebounceRebuild)
|
|
3765
|
+
.on('unlink', addChangeAndDebounceRebuild)
|
|
3766
|
+
.on('addDir', addChangeAndDebounceRebuild)
|
|
3767
|
+
.on('unlinkDir', addChangeAndDebounceRebuild)
|
|
3768
|
+
.on('error', <span class="fstat-no" title="function not covered" >e </span>=> <span class="cstat-no" title="statement not covered" >error(`Watcher error: ${e}`))</span>
|
|
3769
|
+
.on('ready', () => logOnce(
|
|
3770
|
+
self.apos.task.getReq().t('apostrophe:assetBuildWatchStarted')
|
|
3771
|
+
));
|
|
3772
|
+
|
|
3773
|
+
// Simple, capped, self-exhausting queue implementation.
|
|
3774
|
+
function enqueue(fn) {
|
|
3775
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (queueLength === 2) {
|
|
3776
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3777
|
+
}
|
|
3778
|
+
queue.push(fn);
|
|
3779
|
+
queueLength++;
|
|
3780
|
+
};
|
|
3781
|
+
async function dequeue() {
|
|
3782
|
+
if (!queueLength) {
|
|
3783
|
+
queueRunning = false;
|
|
3784
|
+
return;
|
|
3785
|
+
}
|
|
3786
|
+
queueRunning = true;
|
|
3787
|
+
await queue.pop()(changesPool, rebuildCallback);
|
|
3788
|
+
queueLength--;
|
|
3789
|
+
await dequeue();
|
|
3790
|
+
}
|
|
3791
|
+
async function chain() {
|
|
3792
|
+
enqueue(self.rebuild);
|
|
3793
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!queueRunning) {
|
|
3794
|
+
await dequeue();
|
|
3795
|
+
}
|
|
3796
|
+
}
|
|
3797
|
+
},
|
|
3798
|
+
|
|
3799
|
+
// An implementation method that you should not need to call.
|
|
3800
|
+
// Sets a predetermined configuration for the frontend builds.
|
|
3801
|
+
// If you are trying to enable IE11 support for ui/src, use the
|
|
3802
|
+
// `es5: true` option (es5 builds are disabled by default).
|
|
3803
|
+
configureBuilds() {
|
|
3804
|
+
const srcPrologue = stripIndent`
|
|
3805
|
+
(function() {
|
|
3806
|
+
window.apos = window.apos || {};
|
|
3807
|
+
var data = document.body && document.body.getAttribute('data-apos');
|
|
3808
|
+
Object.assign(window.apos, JSON.parse(data || '{}'));
|
|
3809
|
+
if (data) {
|
|
3810
|
+
document.body.removeAttribute('data-apos');
|
|
3811
|
+
}
|
|
3812
|
+
if (window.apos.modules) {
|
|
3813
|
+
for (const module of Object.values(window.apos.modules)) {
|
|
3814
|
+
if (module.alias) {
|
|
3815
|
+
window.apos[module.alias] = module;
|
|
3816
|
+
}
|
|
3817
|
+
}
|
|
3818
|
+
}
|
|
3819
|
+
})();
|
|
3820
|
+
`;
|
|
3821
|
+
self.builds = {
|
|
3822
|
+
src: {
|
|
3823
|
+
scenes: [ 'public', 'apos' ],
|
|
3824
|
+
webpack: true,
|
|
3825
|
+
outputs: [ 'css', 'js' ],
|
|
3826
|
+
label: 'apostrophe:modernBuild',
|
|
3827
|
+
// Load index.js and index.scss from each module
|
|
3828
|
+
index: true,
|
|
3829
|
+
// Load only in browsers that support ES6 modules
|
|
3830
|
+
condition: 'module',
|
|
3831
|
+
prologue: srcPrologue
|
|
3832
|
+
},
|
|
3833
|
+
'src-es5': {
|
|
3834
|
+
// An alternative build from the same sources for IE11
|
|
3835
|
+
source: 'src',
|
|
3836
|
+
webpack: true,
|
|
3837
|
+
scenes: [ 'public', 'apos' ],
|
|
3838
|
+
// The CSS from the src build is identical, do not duplicate it
|
|
3839
|
+
outputs: [ 'js' ],
|
|
3840
|
+
label: 'apostrophe:ie11Build',
|
|
3841
|
+
// Load index.js and index.scss from each module
|
|
3842
|
+
index: true,
|
|
3843
|
+
// The polyfills babel will be expecting
|
|
3844
|
+
prologue: stripIndent`
|
|
3845
|
+
import "core-js/stable";
|
|
3846
|
+
import "regenerator-runtime/runtime";
|
|
3847
|
+
${srcPrologue}
|
|
3848
|
+
`,
|
|
3849
|
+
// Load only in browsers that do not support ES6 modules
|
|
3850
|
+
condition: 'nomodule'
|
|
3851
|
+
},
|
|
3852
|
+
public: {
|
|
3853
|
+
scenes: [ 'public', 'apos' ],
|
|
3854
|
+
outputs: [ 'css', 'js' ],
|
|
3855
|
+
label: 'apostrophe:rawCssAndJs',
|
|
3856
|
+
// Just concatenates
|
|
3857
|
+
webpack: false
|
|
3858
|
+
},
|
|
3859
|
+
apos: {
|
|
3860
|
+
scenes: [ 'apos' ],
|
|
3861
|
+
outputs: [ 'js' ],
|
|
3862
|
+
webpack: true,
|
|
3863
|
+
label: 'apostrophe:apostropheAdminUi',
|
|
3864
|
+
// Only rebuilt on npm updates unless APOS_DEV is set in the environment
|
|
3865
|
+
// to indicate that the dev writes project level or npm linked admin UI
|
|
3866
|
+
// code of their own which might be newer than package-lock.json
|
|
3867
|
+
apos: true,
|
|
3868
|
+
prologue: stripIndent`
|
|
3869
|
+
import 'Modules/@apostrophecms/ui/scss/global/import-all.scss';
|
|
3870
|
+
import Vue from 'Modules/@apostrophecms/ui/lib/vue';
|
|
3871
|
+
window.apos.bus = new Vue();
|
|
3872
|
+
`,
|
|
3873
|
+
// Load only in browsers that support ES6 modules
|
|
3874
|
+
condition: 'module'
|
|
3875
|
+
}
|
|
3876
|
+
// We could add an apos-ie11 bundle that just pushes a "sorry charlie" prologue,
|
|
3877
|
+
// if we chose
|
|
3878
|
+
};
|
|
3879
|
+
if (!self.options.es5) {
|
|
3880
|
+
delete self.builds['src-es5'];
|
|
3881
|
+
}
|
|
3882
|
+
},
|
|
3883
|
+
// Filter the given css performing any necessary transformations,
|
|
3884
|
+
// such as support for the /modules path regardless of where
|
|
3885
|
+
// static assets are actually deployed
|
|
3886
|
+
filterCss(css, { modulesPrefix }) {
|
|
3887
|
+
return self.filterCssUrls(css, <span class="fstat-no" title="function not covered" >ur</span>l => {
|
|
3888
|
+
<span class="cstat-no" title="statement not covered" > if (url.startsWith('/modules')) {</span>
|
|
3889
|
+
<span class="cstat-no" title="statement not covered" > return url.replace('/modules', modulesPrefix);</span>
|
|
3890
|
+
}
|
|
3891
|
+
<span class="cstat-no" title="statement not covered" > return url;</span>
|
|
3892
|
+
});
|
|
3893
|
+
},
|
|
3894
|
+
// Run all URLs in CSS through a filter function
|
|
3895
|
+
filterCssUrls(css, filter) {
|
|
3896
|
+
css = css.replace(/url\(([^'"].*?)\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
|
|
3897
|
+
<span class="cstat-no" title="statement not covered" > return 'url(' + filter(url) + ')';</span>
|
|
3898
|
+
});
|
|
3899
|
+
css = css.replace(/url\("([^"]+?)"\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
|
|
3900
|
+
<span class="cstat-no" title="statement not covered" > return 'url("' + filter(url) + '")';</span>
|
|
3901
|
+
});
|
|
3902
|
+
css = css.replace(/url\('([^']+?)'\)/g, <span class="fstat-no" title="function not covered" >fu</span>nction(s, url) {
|
|
3903
|
+
<span class="cstat-no" title="statement not covered" > return 'url(\'' + filter(url) + '\')';</span>
|
|
3904
|
+
});
|
|
3905
|
+
return css;
|
|
3906
|
+
}
|
|
3907
|
+
};
|
|
3908
|
+
},
|
|
3909
|
+
helpers(self) {
|
|
3910
|
+
return {
|
|
3911
|
+
stylesheets: function (when) {
|
|
3912
|
+
return self.stylesheetsHelper(when);
|
|
3913
|
+
},
|
|
3914
|
+
scripts: function (when) {
|
|
3915
|
+
return self.scriptsHelper(when);
|
|
3916
|
+
},
|
|
3917
|
+
refreshOnRestart() {
|
|
3918
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!self.shouldRefreshOnRestart()) {
|
|
3919
|
+
return '';
|
|
3920
|
+
}
|
|
3921
|
+
<span class="cstat-no" title="statement not covered" > return self.apos.template.safe(`<script data-apos-refresh-on-restart="${self.action}/restart-id" src="${self.action}/refresh-on-restart"></script>`);</span>
|
|
3922
|
+
},
|
|
3923
|
+
<span class="fstat-no" title="function not covered" > ur</span>l(path) {
|
|
3924
|
+
<span class="cstat-no" title="statement not covered" > return `${self.getAssetBaseUrl()}${path}`;</span>
|
|
3925
|
+
}
|
|
3926
|
+
};
|
|
3927
|
+
},
|
|
3928
|
+
apiRoutes(self) {
|
|
3929
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!self.shouldRefreshOnRestart()) {
|
|
3930
|
+
return;
|
|
3931
|
+
}
|
|
3932
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
3933
|
+
get: {
|
|
3934
|
+
<span class="fstat-no" title="function not covered" > re</span>freshOnRestart(req) {
|
|
3935
|
+
<span class="cstat-no" title="statement not covered" > req.res.setHeader('content-type', 'text/javascript');</span>
|
|
3936
|
+
<span class="cstat-no" title="statement not covered" > return fs.readFileSync(path.join(__dirname, '/lib/refresh-on-restart.js'), 'utf8');</span>
|
|
3937
|
+
}
|
|
3938
|
+
},
|
|
3939
|
+
// Use a POST route so IE11 doesn't cache it
|
|
3940
|
+
post: {
|
|
3941
|
+
<span class="fstat-no" title="function not covered" > as</span>ync restartId(req) {
|
|
3942
|
+
// Long polling: keep the logs quiet by responding slowly, except the
|
|
3943
|
+
// first time. If we restart, the request will fail immediately,
|
|
3944
|
+
// and the client will know to try again with `fast`. The client also
|
|
3945
|
+
// uses `fast` the first time.
|
|
3946
|
+
<span class="cstat-no" title="statement not covered" > if (req.query.fast) {</span>
|
|
3947
|
+
<span class="cstat-no" title="statement not covered" > return self.restartId;</span>
|
|
3948
|
+
}
|
|
3949
|
+
// Long polling will be interrupted if restartId changes.
|
|
3950
|
+
let delay = <span class="cstat-no" title="statement not covered" >30000;</span>
|
|
3951
|
+
const step = <span class="cstat-no" title="statement not covered" >300;</span>
|
|
3952
|
+
const oldRestartId = <span class="cstat-no" title="statement not covered" >self.restartId;</span>
|
|
3953
|
+
<span class="cstat-no" title="statement not covered" > while (delay > 0 && oldRestartId === self.restartId) {</span>
|
|
3954
|
+
<span class="cstat-no" title="statement not covered" > delay -= step;</span>
|
|
3955
|
+
<span class="cstat-no" title="statement not covered" > await Promise.delay(step);</span>
|
|
3956
|
+
}
|
|
3957
|
+
<span class="cstat-no" title="statement not covered" > return self.restartId;</span>
|
|
3958
|
+
}
|
|
3959
|
+
}
|
|
3960
|
+
};
|
|
3961
|
+
}
|
|
3962
|
+
};
|
|
3963
|
+
</pre></td></tr></table></pre>
|
|
3964
|
+
|
|
3965
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
3966
|
+
</div><!-- /wrapper -->
|
|
3967
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
3968
|
+
Code coverage generated by
|
|
3969
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3970
|
+
at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
|
|
3971
|
+
</div>
|
|
3972
|
+
<script src="../../../../prettify.js"></script>
|
|
3973
|
+
<script>
|
|
3974
|
+
window.onload = function () {
|
|
3975
|
+
prettyPrint();
|
|
3976
|
+
};
|
|
3977
|
+
</script>
|
|
3978
|
+
<script src="../../../../sorter.js"></script>
|
|
3979
|
+
<script src="../../../../block-navigation.js"></script>
|
|
3980
|
+
</body>
|
|
3981
|
+
</html>
|
|
3982
|
+
|