apostrophe 2.221.0 → 2.221.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/lib/modules/apostrophe-caches/index.js +23 -1
  3. package/lib/modules/apostrophe-soft-redirects/index.js +21 -14
  4. package/package.json +1 -1
  5. package/test/caches.js +29 -0
  6. package/test/soft-redirects.js +16 -3
  7. package/.nyc_output/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
  8. package/.nyc_output/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
  9. package/.nyc_output/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
  10. package/.nyc_output/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
  11. package/.nyc_output/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
  12. package/.nyc_output/processinfo/02d8fb44-f6bc-4ab4-8f47-22c7a42b887d.json +0 -1
  13. package/.nyc_output/processinfo/14b3f5f0-7e4e-461b-a7d9-4b735f510bd7.json +0 -1
  14. package/.nyc_output/processinfo/99acae99-becc-463d-ba35-9333f88d2694.json +0 -1
  15. package/.nyc_output/processinfo/d071f9e0-3b11-44e6-9817-69f184dd064d.json +0 -1
  16. package/.nyc_output/processinfo/ed000bec-7ff7-49bf-a109-d17bfe883433.json +0 -1
  17. package/.nyc_output/processinfo/index.json +0 -1
  18. package/coverage/a3/defaults.js.html +0 -253
  19. package/coverage/a3/index.html +0 -131
  20. package/coverage/a3/index.js.html +0 -2338
  21. package/coverage/a3/lib/escape-host.js.html +0 -109
  22. package/coverage/a3/lib/index.html +0 -176
  23. package/coverage/a3/lib/mongodb-connect.js.html +0 -250
  24. package/coverage/a3/lib/moog-require.js.html +0 -790
  25. package/coverage/a3/lib/moog.js.html +0 -1711
  26. package/coverage/a3/lib/opentelemetry.js.html +0 -517
  27. package/coverage/a3/modules/@apostrophecms/admin-bar/index.html +0 -116
  28. package/coverage/a3/modules/@apostrophecms/admin-bar/index.js.html +0 -931
  29. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.html +0 -116
  30. package/coverage/a3/modules/@apostrophecms/any-doc-type/index.js.html +0 -115
  31. package/coverage/a3/modules/@apostrophecms/any-page-type/index.html +0 -116
  32. package/coverage/a3/modules/@apostrophecms/any-page-type/index.js.html +0 -1105
  33. package/coverage/a3/modules/@apostrophecms/archive-page/index.html +0 -116
  34. package/coverage/a3/modules/@apostrophecms/archive-page/index.js.html +0 -97
  35. package/coverage/a3/modules/@apostrophecms/area/index.html +0 -116
  36. package/coverage/a3/modules/@apostrophecms/area/index.js.html +0 -2104
  37. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/area.js.html +0 -469
  38. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/index.html +0 -131
  39. package/coverage/a3/modules/@apostrophecms/area/lib/custom-tags/widget.js.html +0 -286
  40. package/coverage/a3/modules/@apostrophecms/asset/index.html +0 -116
  41. package/coverage/a3/modules/@apostrophecms/asset/index.js.html +0 -3982
  42. package/coverage/a3/modules/@apostrophecms/asset/lib/globalIcons.js.html +0 -346
  43. package/coverage/a3/modules/@apostrophecms/asset/lib/index.html +0 -116
  44. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/index.html +0 -131
  45. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.scss.js.html +0 -289
  46. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/apos/webpack.vue.js.html +0 -148
  47. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/index.html +0 -116
  48. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/index.html +0 -131
  49. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.es5.js.html +0 -184
  50. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/src/webpack.scss.js.html +0 -238
  51. package/coverage/a3/modules/@apostrophecms/asset/lib/webpack/utils.js.html +0 -958
  52. package/coverage/a3/modules/@apostrophecms/attachment/index.html +0 -116
  53. package/coverage/a3/modules/@apostrophecms/attachment/index.js.html +0 -3676
  54. package/coverage/a3/modules/@apostrophecms/attachment/lib/index.html +0 -116
  55. package/coverage/a3/modules/@apostrophecms/attachment/lib/legacy-migrations.js.html +0 -205
  56. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/index.html +0 -116
  57. package/coverage/a3/modules/@apostrophecms/attachment/lib/tasks/rescale.js.html +0 -328
  58. package/coverage/a3/modules/@apostrophecms/busy/index.html +0 -116
  59. package/coverage/a3/modules/@apostrophecms/busy/index.js.html +0 -145
  60. package/coverage/a3/modules/@apostrophecms/cache/index.html +0 -116
  61. package/coverage/a3/modules/@apostrophecms/cache/index.js.html +0 -424
  62. package/coverage/a3/modules/@apostrophecms/db/index.html +0 -116
  63. package/coverage/a3/modules/@apostrophecms/db/index.js.html +0 -640
  64. package/coverage/a3/modules/@apostrophecms/doc/index.html +0 -116
  65. package/coverage/a3/modules/@apostrophecms/doc/index.js.html +0 -3937
  66. package/coverage/a3/modules/@apostrophecms/doc/lib/index.html +0 -116
  67. package/coverage/a3/modules/@apostrophecms/doc/lib/legacy-migrations.js.html +0 -622
  68. package/coverage/a3/modules/@apostrophecms/doc-type/index.html +0 -116
  69. package/coverage/a3/modules/@apostrophecms/doc-type/index.js.html +0 -8638
  70. package/coverage/a3/modules/@apostrophecms/doc-type/lib/autocomplete.js.html +0 -319
  71. package/coverage/a3/modules/@apostrophecms/doc-type/lib/index.html +0 -116
  72. package/coverage/a3/modules/@apostrophecms/email/index.html +0 -116
  73. package/coverage/a3/modules/@apostrophecms/email/index.js.html +0 -301
  74. package/coverage/a3/modules/@apostrophecms/error/index.html +0 -116
  75. package/coverage/a3/modules/@apostrophecms/error/index.js.html +0 -202
  76. package/coverage/a3/modules/@apostrophecms/express/index.html +0 -116
  77. package/coverage/a3/modules/@apostrophecms/express/index.js.html +0 -2116
  78. package/coverage/a3/modules/@apostrophecms/file/index.html +0 -116
  79. package/coverage/a3/modules/@apostrophecms/file/index.js.html +0 -367
  80. package/coverage/a3/modules/@apostrophecms/file-tag/index.html +0 -116
  81. package/coverage/a3/modules/@apostrophecms/file-tag/index.js.html +0 -127
  82. package/coverage/a3/modules/@apostrophecms/global/index.html +0 -116
  83. package/coverage/a3/modules/@apostrophecms/global/index.js.html +0 -535
  84. package/coverage/a3/modules/@apostrophecms/home-page/index.html +0 -116
  85. package/coverage/a3/modules/@apostrophecms/home-page/index.js.html +0 -94
  86. package/coverage/a3/modules/@apostrophecms/html-widget/index.html +0 -116
  87. package/coverage/a3/modules/@apostrophecms/html-widget/index.js.html +0 -271
  88. package/coverage/a3/modules/@apostrophecms/http/index.html +0 -116
  89. package/coverage/a3/modules/@apostrophecms/http/index.js.html +0 -976
  90. package/coverage/a3/modules/@apostrophecms/i18n/index.html +0 -116
  91. package/coverage/a3/modules/@apostrophecms/i18n/index.js.html +0 -2083
  92. package/coverage/a3/modules/@apostrophecms/image/index.html +0 -116
  93. package/coverage/a3/modules/@apostrophecms/image/index.js.html +0 -1486
  94. package/coverage/a3/modules/@apostrophecms/image-tag/index.html +0 -116
  95. package/coverage/a3/modules/@apostrophecms/image-tag/index.js.html +0 -127
  96. package/coverage/a3/modules/@apostrophecms/image-widget/index.html +0 -116
  97. package/coverage/a3/modules/@apostrophecms/image-widget/index.js.html +0 -145
  98. package/coverage/a3/modules/@apostrophecms/job/index.html +0 -116
  99. package/coverage/a3/modules/@apostrophecms/job/index.js.html +0 -1321
  100. package/coverage/a3/modules/@apostrophecms/launder/index.html +0 -116
  101. package/coverage/a3/modules/@apostrophecms/launder/index.js.html +0 -124
  102. package/coverage/a3/modules/@apostrophecms/lock/index.html +0 -116
  103. package/coverage/a3/modules/@apostrophecms/lock/index.js.html +0 -676
  104. package/coverage/a3/modules/@apostrophecms/login/index.html +0 -116
  105. package/coverage/a3/modules/@apostrophecms/login/index.js.html +0 -2617
  106. package/coverage/a3/modules/@apostrophecms/migration/index.html +0 -116
  107. package/coverage/a3/modules/@apostrophecms/migration/index.js.html +0 -970
  108. package/coverage/a3/modules/@apostrophecms/modal/index.html +0 -116
  109. package/coverage/a3/modules/@apostrophecms/modal/index.js.html +0 -193
  110. package/coverage/a3/modules/@apostrophecms/module/index.html +0 -116
  111. package/coverage/a3/modules/@apostrophecms/module/index.js.html +0 -2500
  112. package/coverage/a3/modules/@apostrophecms/module/lib/events.js.html +0 -547
  113. package/coverage/a3/modules/@apostrophecms/module/lib/index.html +0 -116
  114. package/coverage/a3/modules/@apostrophecms/notification/index.html +0 -116
  115. package/coverage/a3/modules/@apostrophecms/notification/index.js.html +0 -1315
  116. package/coverage/a3/modules/@apostrophecms/oembed/index.html +0 -116
  117. package/coverage/a3/modules/@apostrophecms/oembed/index.js.html +0 -781
  118. package/coverage/a3/modules/@apostrophecms/oembed/lib/index.html +0 -161
  119. package/coverage/a3/modules/@apostrophecms/oembed/lib/infogram.js.html +0 -178
  120. package/coverage/a3/modules/@apostrophecms/oembed/lib/vimeo.js.html +0 -124
  121. package/coverage/a3/modules/@apostrophecms/oembed/lib/wufoo.js.html +0 -256
  122. package/coverage/a3/modules/@apostrophecms/oembed/lib/youtube.js.html +0 -322
  123. package/coverage/a3/modules/@apostrophecms/oembed-field/index.html +0 -116
  124. package/coverage/a3/modules/@apostrophecms/oembed-field/index.js.html +0 -268
  125. package/coverage/a3/modules/@apostrophecms/page/index.html +0 -116
  126. package/coverage/a3/modules/@apostrophecms/page/index.js.html +0 -6955
  127. package/coverage/a3/modules/@apostrophecms/page/lib/index.html +0 -116
  128. package/coverage/a3/modules/@apostrophecms/page/lib/legacy-migrations.js.html +0 -568
  129. package/coverage/a3/modules/@apostrophecms/page-type/index.html +0 -116
  130. package/coverage/a3/modules/@apostrophecms/page-type/index.js.html +0 -1501
  131. package/coverage/a3/modules/@apostrophecms/pager/index.html +0 -116
  132. package/coverage/a3/modules/@apostrophecms/pager/index.js.html +0 -232
  133. package/coverage/a3/modules/@apostrophecms/permission/index.html +0 -116
  134. package/coverage/a3/modules/@apostrophecms/permission/index.js.html +0 -1057
  135. package/coverage/a3/modules/@apostrophecms/permission/lib/index.html +0 -116
  136. package/coverage/a3/modules/@apostrophecms/permission/lib/legacy-migrations.js.html +0 -160
  137. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.html +0 -116
  138. package/coverage/a3/modules/@apostrophecms/piece-page-type/index.js.html +0 -1051
  139. package/coverage/a3/modules/@apostrophecms/piece-type/index.html +0 -116
  140. package/coverage/a3/modules/@apostrophecms/piece-type/index.js.html +0 -3103
  141. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.html +0 -116
  142. package/coverage/a3/modules/@apostrophecms/polymorphic-type/index.js.html +0 -157
  143. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.html +0 -116
  144. package/coverage/a3/modules/@apostrophecms/rich-text-widget/index.js.html +0 -1363
  145. package/coverage/a3/modules/@apostrophecms/schema/index.html +0 -116
  146. package/coverage/a3/modules/@apostrophecms/schema/index.js.html +0 -4603
  147. package/coverage/a3/modules/@apostrophecms/schema/lib/addFieldTypes.js.html +0 -3502
  148. package/coverage/a3/modules/@apostrophecms/schema/lib/index.html +0 -131
  149. package/coverage/a3/modules/@apostrophecms/schema/lib/joinr.js.html +0 -703
  150. package/coverage/a3/modules/@apostrophecms/search/index.html +0 -116
  151. package/coverage/a3/modules/@apostrophecms/search/index.js.html +0 -1222
  152. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.html +0 -116
  153. package/coverage/a3/modules/@apostrophecms/soft-redirect/index.js.html +0 -343
  154. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.html +0 -116
  155. package/coverage/a3/modules/@apostrophecms/submitted-draft/index.js.html +0 -595
  156. package/coverage/a3/modules/@apostrophecms/task/index.html +0 -116
  157. package/coverage/a3/modules/@apostrophecms/task/index.js.html +0 -1147
  158. package/coverage/a3/modules/@apostrophecms/template/index.html +0 -116
  159. package/coverage/a3/modules/@apostrophecms/template/index.js.html +0 -2731
  160. package/coverage/a3/modules/@apostrophecms/template/lib/bundlesLoader.js.html +0 -559
  161. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/component.js.html +0 -310
  162. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/fragment.js.html +0 -325
  163. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/index.html +0 -146
  164. package/coverage/a3/modules/@apostrophecms/template/lib/custom-tags/render.js.html +0 -490
  165. package/coverage/a3/modules/@apostrophecms/template/lib/index.html +0 -131
  166. package/coverage/a3/modules/@apostrophecms/template/lib/nunjucksLoader.js.html +0 -658
  167. package/coverage/a3/modules/@apostrophecms/ui/index.html +0 -116
  168. package/coverage/a3/modules/@apostrophecms/ui/index.js.html +0 -181
  169. package/coverage/a3/modules/@apostrophecms/uploadfs/index.html +0 -116
  170. package/coverage/a3/modules/@apostrophecms/uploadfs/index.js.html +0 -286
  171. package/coverage/a3/modules/@apostrophecms/url/index.html +0 -116
  172. package/coverage/a3/modules/@apostrophecms/url/index.js.html +0 -733
  173. package/coverage/a3/modules/@apostrophecms/user/index.html +0 -116
  174. package/coverage/a3/modules/@apostrophecms/user/index.js.html +0 -1684
  175. package/coverage/a3/modules/@apostrophecms/user/lib/index.html +0 -116
  176. package/coverage/a3/modules/@apostrophecms/user/lib/legacy-migrations.js.html +0 -157
  177. package/coverage/a3/modules/@apostrophecms/util/index.html +0 -116
  178. package/coverage/a3/modules/@apostrophecms/util/index.js.html +0 -3424
  179. package/coverage/a3/modules/@apostrophecms/util/lib/index.html +0 -116
  180. package/coverage/a3/modules/@apostrophecms/util/lib/logger.js.html +0 -319
  181. package/coverage/a3/modules/@apostrophecms/video-widget/index.html +0 -116
  182. package/coverage/a3/modules/@apostrophecms/video-widget/index.js.html +0 -178
  183. package/coverage/a3/modules/@apostrophecms/widget-type/index.html +0 -116
  184. package/coverage/a3/modules/@apostrophecms/widget-type/index.js.html +0 -1225
  185. package/coverage/a3/test-lib/index.html +0 -131
  186. package/coverage/a3/test-lib/test.js.html +0 -232
  187. package/coverage/a3/test-lib/util.js.html +0 -373
  188. package/coverage/base.css +0 -224
  189. package/coverage/block-navigation.js +0 -87
  190. package/coverage/favicon.png +0 -0
  191. package/coverage/index.html +0 -1256
  192. package/coverage/prettify.css +0 -1
  193. package/coverage/prettify.js +0 -2
  194. package/coverage/sort-arrow-sprite.png +0 -0
  195. package/coverage/sorter.js +0 -196
@@ -1,1501 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for a3/modules/@apostrophecms/page-type/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/page-type</a> index.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">75.51% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>111/147</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">68.47% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>63/92</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">86.84% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>33/38</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">75.17% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>109/145</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 medium'></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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">90x</span>
539
- <span class="cline-any cline-neutral">&nbsp;</span>
540
- <span class="cline-any cline-yes">90x</span>
541
- <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">90x</span>
543
- <span class="cline-any cline-neutral">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-neutral">&nbsp;</span>
549
- <span class="cline-any cline-yes">307x</span>
550
- <span class="cline-any cline-neutral">&nbsp;</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-neutral">&nbsp;</span>
553
- <span class="cline-any cline-neutral">&nbsp;</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-neutral">&nbsp;</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-neutral">&nbsp;</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-neutral">&nbsp;</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-yes">327x</span>
564
- <span class="cline-any cline-neutral">&nbsp;</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</span>
567
- <span class="cline-any cline-neutral">&nbsp;</span>
568
- <span class="cline-any cline-neutral">&nbsp;</span>
569
- <span class="cline-any cline-neutral">&nbsp;</span>
570
- <span class="cline-any cline-neutral">&nbsp;</span>
571
- <span class="cline-any cline-neutral">&nbsp;</span>
572
- <span class="cline-any cline-neutral">&nbsp;</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-neutral">&nbsp;</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
- <span class="cline-any cline-neutral">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-neutral">&nbsp;</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-neutral">&nbsp;</span>
591
- <span class="cline-any cline-neutral">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-yes">307x</span>
594
- <span class="cline-any cline-yes">307x</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-yes">307x</span>
598
- <span class="cline-any cline-yes">307x</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-neutral">&nbsp;</span>
601
- <span class="cline-any cline-yes">307x</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-yes">323x</span>
605
- <span class="cline-any cline-yes">4x</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">319x</span>
608
- <span class="cline-any cline-yes">232x</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-yes">87x</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-neutral">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-yes">87x</span>
622
- <span class="cline-any cline-yes">96x</span>
623
- <span class="cline-any cline-yes">81x</span>
624
- <span class="cline-any cline-yes">81x</span>
625
- <span class="cline-any cline-neutral">&nbsp;</span>
626
- <span class="cline-any cline-neutral">&nbsp;</span>
627
- <span class="cline-any cline-yes">87x</span>
628
- <span class="cline-any cline-yes">6x</span>
629
- <span class="cline-any cline-yes">6x</span>
630
- <span class="cline-any cline-neutral">&nbsp;</span>
631
- <span class="cline-any cline-yes">81x</span>
632
- <span class="cline-any cline-yes">81x</span>
633
- <span class="cline-any cline-no">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-neutral">&nbsp;</span>
637
- <span class="cline-any cline-neutral">&nbsp;</span>
638
- <span class="cline-any cline-yes">81x</span>
639
- <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-neutral">&nbsp;</span>
641
- <span class="cline-any cline-neutral">&nbsp;</span>
642
- <span class="cline-any cline-neutral">&nbsp;</span>
643
- <span class="cline-any cline-yes">21x</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-neutral">&nbsp;</span>
646
- <span class="cline-any cline-neutral">&nbsp;</span>
647
- <span class="cline-any cline-neutral">&nbsp;</span>
648
- <span class="cline-any cline-neutral">&nbsp;</span>
649
- <span class="cline-any cline-neutral">&nbsp;</span>
650
- <span class="cline-any cline-yes">21x</span>
651
- <span class="cline-any cline-yes">20x</span>
652
- <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-yes">1x</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-neutral">&nbsp;</span>
658
- <span class="cline-any cline-neutral">&nbsp;</span>
659
- <span class="cline-any cline-neutral">&nbsp;</span>
660
- <span class="cline-any cline-yes">1x</span>
661
- <span class="cline-any cline-yes">1x</span>
662
- <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-neutral">&nbsp;</span>
664
- <span class="cline-any cline-neutral">&nbsp;</span>
665
- <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-neutral">&nbsp;</span>
667
- <span class="cline-any cline-neutral">&nbsp;</span>
668
- <span class="cline-any cline-neutral">&nbsp;</span>
669
- <span class="cline-any cline-yes">32x</span>
670
- <span class="cline-any cline-neutral">&nbsp;</span>
671
- <span class="cline-any cline-yes">32x</span>
672
- <span class="cline-any cline-yes">32x</span>
673
- <span class="cline-any cline-neutral">&nbsp;</span>
674
- <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-neutral">&nbsp;</span>
676
- <span class="cline-any cline-neutral">&nbsp;</span>
677
- <span class="cline-any cline-neutral">&nbsp;</span>
678
- <span class="cline-any cline-neutral">&nbsp;</span>
679
- <span class="cline-any cline-neutral">&nbsp;</span>
680
- <span class="cline-any cline-neutral">&nbsp;</span>
681
- <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-yes">32x</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-neutral">&nbsp;</span>
686
- <span class="cline-any cline-neutral">&nbsp;</span>
687
- <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-neutral">&nbsp;</span>
689
- <span class="cline-any cline-neutral">&nbsp;</span>
690
- <span class="cline-any cline-neutral">&nbsp;</span>
691
- <span class="cline-any cline-neutral">&nbsp;</span>
692
- <span class="cline-any cline-neutral">&nbsp;</span>
693
- <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-neutral">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-neutral">&nbsp;</span>
701
- <span class="cline-any cline-neutral">&nbsp;</span>
702
- <span class="cline-any cline-neutral">&nbsp;</span>
703
- <span class="cline-any cline-neutral">&nbsp;</span>
704
- <span class="cline-any cline-neutral">&nbsp;</span>
705
- <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-neutral">&nbsp;</span>
707
- <span class="cline-any cline-yes">5x</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-neutral">&nbsp;</span>
710
- <span class="cline-any cline-yes">5x</span>
711
- <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-neutral">&nbsp;</span>
713
- <span class="cline-any cline-neutral">&nbsp;</span>
714
- <span class="cline-any cline-yes">5x</span>
715
- <span class="cline-any cline-neutral">&nbsp;</span>
716
- <span class="cline-any cline-neutral">&nbsp;</span>
717
- <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-neutral">&nbsp;</span>
719
- <span class="cline-any cline-neutral">&nbsp;</span>
720
- <span class="cline-any cline-no">&nbsp;</span>
721
- <span class="cline-any cline-neutral">&nbsp;</span>
722
- <span class="cline-any cline-neutral">&nbsp;</span>
723
- <span class="cline-any cline-neutral">&nbsp;</span>
724
- <span class="cline-any cline-yes">5x</span>
725
- <span class="cline-any cline-yes">1x</span>
726
- <span class="cline-any cline-neutral">&nbsp;</span>
727
- <span class="cline-any cline-neutral">&nbsp;</span>
728
- <span class="cline-any cline-neutral">&nbsp;</span>
729
- <span class="cline-any cline-neutral">&nbsp;</span>
730
- <span class="cline-any cline-neutral">&nbsp;</span>
731
- <span class="cline-any cline-yes">1x</span>
732
- <span class="cline-any cline-neutral">&nbsp;</span>
733
- <span class="cline-any cline-neutral">&nbsp;</span>
734
- <span class="cline-any cline-yes">1x</span>
735
- <span class="cline-any cline-neutral">&nbsp;</span>
736
- <span class="cline-any cline-neutral">&nbsp;</span>
737
- <span class="cline-any cline-no">&nbsp;</span>
738
- <span class="cline-any cline-neutral">&nbsp;</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-yes">1x</span>
741
- <span class="cline-any cline-neutral">&nbsp;</span>
742
- <span class="cline-any cline-neutral">&nbsp;</span>
743
- <span class="cline-any cline-yes">1x</span>
744
- <span class="cline-any cline-neutral">&nbsp;</span>
745
- <span class="cline-any cline-neutral">&nbsp;</span>
746
- <span class="cline-any cline-neutral">&nbsp;</span>
747
- <span class="cline-any cline-neutral">&nbsp;</span>
748
- <span class="cline-any cline-yes">14x</span>
749
- <span class="cline-any cline-no">&nbsp;</span>
750
- <span class="cline-any cline-neutral">&nbsp;</span>
751
- <span class="cline-any cline-yes">14x</span>
752
- <span class="cline-any cline-no">&nbsp;</span>
753
- <span class="cline-any cline-neutral">&nbsp;</span>
754
- <span class="cline-any cline-neutral">&nbsp;</span>
755
- <span class="cline-any cline-neutral">&nbsp;</span>
756
- <span class="cline-any cline-yes">14x</span>
757
- <span class="cline-any cline-no">&nbsp;</span>
758
- <span class="cline-any cline-neutral">&nbsp;</span>
759
- <span class="cline-any cline-neutral">&nbsp;</span>
760
- <span class="cline-any cline-neutral">&nbsp;</span>
761
- <span class="cline-any cline-no">&nbsp;</span>
762
- <span class="cline-any cline-no">&nbsp;</span>
763
- <span class="cline-any cline-neutral">&nbsp;</span>
764
- <span class="cline-any cline-neutral">&nbsp;</span>
765
- <span class="cline-any cline-neutral">&nbsp;</span>
766
- <span class="cline-any cline-neutral">&nbsp;</span>
767
- <span class="cline-any cline-neutral">&nbsp;</span>
768
- <span class="cline-any cline-neutral">&nbsp;</span>
769
- <span class="cline-any cline-neutral">&nbsp;</span>
770
- <span class="cline-any cline-yes">307x</span>
771
- <span class="cline-any cline-neutral">&nbsp;</span>
772
- <span class="cline-any cline-yes">205x</span>
773
- <span class="cline-any cline-neutral">&nbsp;</span>
774
- <span class="cline-any cline-neutral">&nbsp;</span>
775
- <span class="cline-any cline-neutral">&nbsp;</span>
776
- <span class="cline-any cline-neutral">&nbsp;</span>
777
- <span class="cline-any cline-neutral">&nbsp;</span>
778
- <span class="cline-any cline-neutral">&nbsp;</span>
779
- <span class="cline-any cline-neutral">&nbsp;</span>
780
- <span class="cline-any cline-neutral">&nbsp;</span>
781
- <span class="cline-any cline-neutral">&nbsp;</span>
782
- <span class="cline-any cline-neutral">&nbsp;</span>
783
- <span class="cline-any cline-neutral">&nbsp;</span>
784
- <span class="cline-any cline-neutral">&nbsp;</span>
785
- <span class="cline-any cline-neutral">&nbsp;</span>
786
- <span class="cline-any cline-neutral">&nbsp;</span>
787
- <span class="cline-any cline-neutral">&nbsp;</span>
788
- <span class="cline-any cline-neutral">&nbsp;</span>
789
- <span class="cline-any cline-neutral">&nbsp;</span>
790
- <span class="cline-any cline-neutral">&nbsp;</span>
791
- <span class="cline-any cline-neutral">&nbsp;</span>
792
- <span class="cline-any cline-neutral">&nbsp;</span>
793
- <span class="cline-any cline-yes">413x</span>
794
- <span class="cline-any cline-yes">413x</span>
795
- <span class="cline-any cline-yes">413x</span>
796
- <span class="cline-any cline-neutral">&nbsp;</span>
797
- <span class="cline-any cline-neutral">&nbsp;</span>
798
- <span class="cline-any cline-neutral">&nbsp;</span>
799
- <span class="cline-any cline-neutral">&nbsp;</span>
800
- <span class="cline-any cline-neutral">&nbsp;</span>
801
- <span class="cline-any cline-neutral">&nbsp;</span>
802
- <span class="cline-any cline-neutral">&nbsp;</span>
803
- <span class="cline-any cline-neutral">&nbsp;</span>
804
- <span class="cline-any cline-neutral">&nbsp;</span>
805
- <span class="cline-any cline-neutral">&nbsp;</span>
806
- <span class="cline-any cline-neutral">&nbsp;</span>
807
- <span class="cline-any cline-yes">96x</span>
808
- <span class="cline-any cline-yes">96x</span>
809
- <span class="cline-any cline-yes">15x</span>
810
- <span class="cline-any cline-neutral">&nbsp;</span>
811
- <span class="cline-any cline-yes">81x</span>
812
- <span class="cline-any cline-yes">81x</span>
813
- <span class="cline-any cline-yes">5x</span>
814
- <span class="cline-any cline-neutral">&nbsp;</span>
815
- <span class="cline-any cline-yes">81x</span>
816
- <span class="cline-any cline-neutral">&nbsp;</span>
817
- <span class="cline-any cline-neutral">&nbsp;</span>
818
- <span class="cline-any cline-neutral">&nbsp;</span>
819
- <span class="cline-any cline-neutral">&nbsp;</span>
820
- <span class="cline-any cline-neutral">&nbsp;</span>
821
- <span class="cline-any cline-neutral">&nbsp;</span>
822
- <span class="cline-any cline-neutral">&nbsp;</span>
823
- <span class="cline-any cline-neutral">&nbsp;</span>
824
- <span class="cline-any cline-yes">81x</span>
825
- <span class="cline-any cline-yes">81x</span>
826
- <span class="cline-any cline-no">&nbsp;</span>
827
- <span class="cline-any cline-neutral">&nbsp;</span>
828
- <span class="cline-any cline-neutral">&nbsp;</span>
829
- <span class="cline-any cline-neutral">&nbsp;</span>
830
- <span class="cline-any cline-neutral">&nbsp;</span>
831
- <span class="cline-any cline-neutral">&nbsp;</span>
832
- <span class="cline-any cline-neutral">&nbsp;</span>
833
- <span class="cline-any cline-neutral">&nbsp;</span>
834
- <span class="cline-any cline-neutral">&nbsp;</span>
835
- <span class="cline-any cline-neutral">&nbsp;</span>
836
- <span class="cline-any cline-neutral">&nbsp;</span>
837
- <span class="cline-any cline-no">&nbsp;</span>
838
- <span class="cline-any cline-neutral">&nbsp;</span>
839
- <span class="cline-any cline-neutral">&nbsp;</span>
840
- <span class="cline-any cline-neutral">&nbsp;</span>
841
- <span class="cline-any cline-neutral">&nbsp;</span>
842
- <span class="cline-any cline-neutral">&nbsp;</span>
843
- <span class="cline-any cline-yes">15x</span>
844
- <span class="cline-any cline-neutral">&nbsp;</span>
845
- <span class="cline-any cline-neutral">&nbsp;</span>
846
- <span class="cline-any cline-neutral">&nbsp;</span>
847
- <span class="cline-any cline-neutral">&nbsp;</span>
848
- <span class="cline-any cline-neutral">&nbsp;</span>
849
- <span class="cline-any cline-yes">195x</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-yes">195x</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-neutral">&nbsp;</span>
856
- <span class="cline-any cline-yes">195x</span>
857
- <span class="cline-any cline-neutral">&nbsp;</span>
858
- <span class="cline-any cline-yes">108x</span>
859
- <span class="cline-any cline-yes">87x</span>
860
- <span class="cline-any cline-neutral">&nbsp;</span>
861
- <span class="cline-any cline-yes">87x</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-no">&nbsp;</span>
864
- <span class="cline-any cline-neutral">&nbsp;</span>
865
- <span class="cline-any cline-neutral">&nbsp;</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">28x</span>
871
- <span class="cline-any cline-neutral">&nbsp;</span>
872
- <span class="cline-any cline-neutral">&nbsp;</span>
873
- <span class="cline-any cline-yes">28x</span>
874
- <span class="cline-any cline-neutral">&nbsp;</span>
875
- <span class="cline-any cline-yes">22x</span>
876
- <span class="cline-any cline-yes">6x</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-yes">6x</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-yes">6x</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-no">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-neutral">&nbsp;</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-neutral">&nbsp;</span>
897
- <span class="cline-any cline-neutral">&nbsp;</span>
898
- <span class="cline-any cline-yes">7x</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-neutral">&nbsp;</span>
901
- <span class="cline-any cline-neutral">&nbsp;</span>
902
- <span class="cline-any cline-neutral">&nbsp;</span>
903
- <span class="cline-any cline-neutral">&nbsp;</span>
904
- <span class="cline-any cline-neutral">&nbsp;</span>
905
- <span class="cline-any cline-neutral">&nbsp;</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-no">&nbsp;</span>
908
- <span class="cline-any cline-neutral">&nbsp;</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-neutral">&nbsp;</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">523x</span>
913
- <span class="cline-any cline-yes">1x</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-yes">1x</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-no">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-yes">307x</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-yes">307x</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-yes">36x</span>
933
- <span class="cline-any cline-yes">36x</span>
934
- <span class="cline-any cline-yes">36x</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-yes">36x</span>
937
- <span class="cline-any cline-yes">27x</span>
938
- <span class="cline-any cline-yes">27x</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-yes">36x</span>
941
- <span class="cline-any cline-yes">36x</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-neutral">&nbsp;</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-yes">307x</span>
953
- <span class="cline-any cline-yes">307x</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-yes">307x</span>
959
- <span class="cline-any cline-yes">1549x</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-neutral">&nbsp;</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-yes">134x</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-yes">134x</span>
972
- <span class="cline-any cline-yes">134x</span>
973
- <span class="cline-any cline-yes">134x</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-yes">134x</span>
976
- <span class="cline-any cline-no">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-yes">134x</span>
979
- <span class="cline-any cline-yes">177x</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-neutral">&nbsp;</span>
985
- <span class="cline-any cline-yes">134x</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-yes">25x</span>
988
- <span class="cline-any cline-yes">25x</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-yes">134x</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-yes">177x</span>
993
- <span class="cline-any cline-yes">177x</span>
994
- <span class="cline-any cline-yes">177x</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-no">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-yes">177x</span>
1002
- <span class="cline-any cline-no">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-yes">177x</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const _ = require('lodash');
1011
- // Same engine used by express to match paths
1012
- const pathToRegexp = require('path-to-regexp');
1013
- &nbsp;
1014
- module.exports = {
1015
- extend: '@apostrophecms/doc-type',
1016
- options: {
1017
- // Pages should never be considered "related documents" when localizing another document etc.
1018
- relatedDocument: false
1019
- },
1020
- fields(self) {
1021
- return {
1022
- add: {
1023
- slug: {
1024
- type: 'slug',
1025
- label: 'apostrophe:slug',
1026
- required: true,
1027
- page: true,
1028
- following: [ 'title', 'archived' ]
1029
- },
1030
- type: {
1031
- type: 'select',
1032
- label: 'apostrophe:type',
1033
- required: true,
1034
- choices: self.options.apos.page.typeChoices.map(function (type) {
1035
- return {
1036
- value: type.name,
1037
- label: type.label
1038
- };
1039
- })
1040
- },
1041
- orphan: {
1042
- type: 'boolean',
1043
- label: 'apostrophe:hideInNavigation',
1044
- def: false
1045
- }
1046
- },
1047
- remove: [ 'archived' ],
1048
- group: {
1049
- utility: {
1050
- // Keep `slug`, `type`, `visibility` and `orphan` fields before others,
1051
- // in case of modules improving `@apostrophecms/doc-type` that would add
1052
- // custom fields (included in `self.fieldsGroups.utility.fields`).
1053
- fields: _.uniq([
1054
- 'slug',
1055
- 'type',
1056
- 'visibility',
1057
- 'orphan',
1058
- ...self.fieldsGroups.utility.fields
1059
- ])
1060
- }
1061
- }
1062
- };
1063
- },
1064
- init(self) {
1065
- self.removeDeduplicatePrefixFields([ 'slug' ]);
1066
- self.addDeduplicateSuffixFields([
1067
- 'slug'
1068
- ]);
1069
- self.rules = {};
1070
- self.dispatchAll();
1071
- },
1072
- handlers(self) {
1073
- return {
1074
- '@apostrophecms/page:serve': {
1075
- async dispatchPage(req) {
1076
- if (!req.data.bestPage) {
1077
- return;
1078
- }
1079
- if (req.data.bestPage.type !== self.name) {
1080
- return;
1081
- }
1082
- let matched;
1083
- <span class="missing-if-branch" title="if path not taken" >I</span>if (_.isEmpty(self.rules)) {
1084
- // If there are no dispatch rules, assume this is an "ordinary" page type and
1085
- // just look for an exact match
1086
- <span class="cstat-no" title="statement not covered" > if (req.remainder !== '/') {</span>
1087
- <span class="cstat-no" title="statement not covered" > req.notFound = true;</span>
1088
- } else {
1089
- <span class="cstat-no" title="statement not covered" > self.acceptResponsibility(req);</span>
1090
- }
1091
- <span class="cstat-no" title="statement not covered" > return;</span>
1092
- }
1093
- _.each(self.rules, function (_rule) {
1094
- if (self.match(req, _rule, req.remainder)) {
1095
- matched = _rule;
1096
- return false;
1097
- }
1098
- });
1099
- if (!matched) {
1100
- req.notFound = true;
1101
- return;
1102
- }
1103
- self.acceptResponsibility(req);
1104
- for (const fn of matched.middleware) {
1105
- const result = <span class="cstat-no" title="statement not covered" >await fn(req);</span>
1106
- <span class="cstat-no" title="statement not covered" > if (result === false) {</span>
1107
- <span class="cstat-no" title="statement not covered" > return;</span>
1108
- }
1109
- }
1110
- await matched.handler(req);
1111
- }
1112
- },
1113
- beforeMove: {
1114
- checkPermissions(req, doc) {
1115
- <span class="missing-if-branch" title="if path not taken" >I</span>if (doc.lastPublishedAt &amp;&amp; !self.apos.permission.can(req, 'publish', '@apostrophecms/any-page-type')) {
1116
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('forbidden', 'Contributors may only move unpublished pages.');</span>
1117
- }
1118
- }
1119
- },
1120
- afterMove: {
1121
- async replayMoveAfterMoved(req, doc) {
1122
- if (!doc._id.includes(':draft')) {
1123
- return;
1124
- }
1125
- const published = await self.findOneForEditing(req.clone({
1126
- mode: 'published'
1127
- }), {
1128
- _id: doc._id.replace(':draft', ':published')
1129
- }, {
1130
- permission: false
1131
- });
1132
- <span class="missing-if-branch" title="else path not taken" >E</span>if (published &amp;&amp; doc.aposLastTargetId) {
1133
- return self.apos.page.move(req.clone({
1134
- mode: 'published'
1135
- }), published._id, doc.aposLastTargetId.replace(':draft', ':published'), doc.aposLastPosition);
1136
- }
1137
- }
1138
- },
1139
- beforePublish: {
1140
- async ancestorsMustBePublished(req, { draft, published }) {
1141
- const ancestorAposDocIds = draft.path.split('/');
1142
- // Self is not a parent
1143
- ancestorAposDocIds.pop();
1144
- const publishedAncestors = await self.apos.doc.db.find({
1145
- aposDocId: {
1146
- $in: ancestorAposDocIds
1147
- },
1148
- aposLocale: published.aposLocale
1149
- }).project({
1150
- _id: 1,
1151
- aposDocId: 1,
1152
- title: 1
1153
- }).toArray();
1154
- <span class="missing-if-branch" title="if path not taken" >I</span>if (publishedAncestors.length !== ancestorAposDocIds.length) {
1155
- const draftAncestors = <span class="cstat-no" title="statement not covered" >await self.apos.doc.db.find({</span>
1156
- aposDocId: {
1157
- $in: ancestorAposDocIds
1158
- },
1159
- aposLocale: draft.aposLocale
1160
- }).project({
1161
- _id: 1,
1162
- aposLocale: 1,
1163
- aposDocId: 1,
1164
- title: 1,
1165
- type: 1
1166
- }).toArray();
1167
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', {</span>
1168
- unpublishedAncestors: draftAncestors.filter(<span class="fstat-no" title="function not covered" >dr</span>aftAncestor =&gt; {
1169
- <span class="cstat-no" title="statement not covered" > return !publishedAncestors.find(<span class="fstat-no" title="function not covered" >pu</span>blishedAncestor =&gt; {</span>
1170
- <span class="cstat-no" title="statement not covered" > return draftAncestor.aposDocId === publishedAncestor.aposDocId;</span>
1171
- });
1172
- })
1173
- });
1174
- }
1175
- }
1176
- },
1177
- beforeUnpublish: {
1178
- async descendantsMustNotBePublished(req, published, options = {}) {
1179
- <span class="missing-if-branch" title="if path not taken" >I</span>if (options.descendantsMustNotBePublished === false) {
1180
- <span class="cstat-no" title="statement not covered" > return;</span>
1181
- }
1182
- const descendants = await self.apos.doc.db.countDocuments({
1183
- path: self.apos.page.matchDescendants(published),
1184
- aposLocale: published.aposLocale
1185
- });
1186
- <span class="missing-if-branch" title="if path not taken" >I</span>if (descendants) {
1187
- // TODO it might be nice to have an option to automatically do it
1188
- // recursively, but right now this is a hypothetical because we
1189
- // only invoke the unpublish API as "undo publish," and "publish" is already
1190
- // guarded to happen from the bottom up. Just providing minimum
1191
- // acceptable coverage here for now
1192
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'You must unpublish child pages before unpublishing their parent.');</span>
1193
- }
1194
- },
1195
- async parkedPageMustNotBeUnpublished(req, published) {
1196
- if (published.parked) {
1197
- throw self.apos.error('invalid', 'apostrophe:pageIsParkedAndCannotBeUnpublished');
1198
- }
1199
- }
1200
- },
1201
- afterRevertPublishedToPrevious: {
1202
- async replayMoveAfterRevert(req, result) {
1203
- const publishedReq = req.clone({
1204
- mode: 'published'
1205
- });
1206
- <span class="missing-if-branch" title="if path not taken" >I</span>if (result.published.level === 0) {
1207
- // The home page cannot move, so there is no
1208
- // chance we need to "replay" such a move
1209
- <span class="cstat-no" title="statement not covered" > return;</span>
1210
- }
1211
- await self.apos.page.move(publishedReq, result.published._id, result.published.aposLastTargetId, result.published.aposLastPosition);
1212
- const published = await self.apos.page.findOneForEditing(publishedReq, {
1213
- _id: result.published._id
1214
- });
1215
- result.published = published;
1216
- }
1217
- },
1218
- beforeDelete: {
1219
- async checkForParked(req, doc, options) {
1220
- <span class="missing-if-branch" title="if path not taken" >I</span>if (doc.level === 0) {
1221
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'The home page may not be removed.');</span>
1222
- }
1223
- <span class="missing-if-branch" title="if path not taken" >I</span>if (doc.parked) {
1224
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'This page is "parked" and may not be removed.');</span>
1225
- }
1226
- },
1227
- async checkForChildren(req, doc, options) {
1228
- <span class="missing-if-branch" title="if path not taken" >I</span>if (options.checkForChildren !== false) {
1229
- const descendants = <span class="cstat-no" title="statement not covered" >await self.apos.doc.db.countDocuments({</span>
1230
- path: self.apos.page.matchDescendants(doc),
1231
- aposLocale: doc.aposLocale
1232
- });
1233
- <span class="cstat-no" title="statement not covered" > if (descendants) {</span>
1234
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'You must delete the children of this page first.');</span>
1235
- }
1236
- }
1237
- }
1238
- }
1239
- };
1240
- },
1241
- methods(self) {
1242
- return {
1243
- dispatchAll() {
1244
- self.dispatch('/', req =&gt; self.setTemplate(req, 'page'));
1245
- },
1246
- // Add an Express-style route that responds when "the rest" of the URL, beyond
1247
- // the page slug itself, matches a pattern.
1248
- //
1249
- // For instance, if the page slug is `/poets`, the URL is
1250
- // `/poets/chaucer`, and this method has been called with
1251
- // `('/:poet', self.poetPage)`, then the `poetPage` method will
1252
- // be invoked with `(req)`. **The method must be an async
1253
- // function, and it will be awaited.**
1254
- //
1255
- // **Special case:** if the page slug is simply `/poets` (with no slash) and
1256
- // there is a dispatch route with the pattern `/`, that route will be invoked.
1257
- //
1258
- // Dispatch routes can also have async middleware. Pass middleware functions as
1259
- // arguments in between the pattern and the handler. Dispatch middleware
1260
- // functions are async functions which receive `(req)` as an argument. If
1261
- // a middleware function explicitly returns `false`, no more middleware is run
1262
- // and the handler is not run. Otherwise the chain of middleware continues
1263
- // and, at the end, the handler is invoked.
1264
- dispatch(pattern) {
1265
- const keys = [];
1266
- const regexp = pathToRegexp(pattern, keys);
1267
- self.rules[pattern] = {
1268
- pattern: pattern,
1269
- middleware: Array.prototype.slice.call(arguments, 1, arguments.length - 1),
1270
- handler: arguments[arguments.length - 1],
1271
- regexp: regexp,
1272
- keys: keys
1273
- };
1274
- },
1275
- // Match a URL according to the provided rule as registered
1276
- // via the dispatch method. If there is a match, `req.params` is
1277
- // set exactly as it would be by Express and `true` is returned.
1278
- match(req, rule, url) {
1279
- const matches = rule.regexp.exec(url);
1280
- if (!matches) {
1281
- return false;
1282
- }
1283
- req.params = {};
1284
- for (let i = 0; i &lt; rule.keys.length; i++) {
1285
- req.params[rule.keys[i].name] = matches[i + 1];
1286
- }
1287
- return true;
1288
- },
1289
- // Called by `pageServe`. Accepts responsibility for
1290
- // the current URL by assigning `req.data.bestPage` to
1291
- // `req.page` and implementing the `scene` option, if set
1292
- // for this module.
1293
- acceptResponsibility(req) {
1294
- // We have a match, so consider bestPage to be the
1295
- // current page for template purposes
1296
- req.data.page = req.data.bestPage;
1297
- <span class="missing-if-branch" title="if path not taken" >I</span>if (self.options.scene) {
1298
- <span class="cstat-no" title="statement not covered" > req.scene = self.options.scene;</span>
1299
- }
1300
- },
1301
- // Returns a string to represent the given `doc` in an
1302
- // autocomplete menu. `doc` will contain only the fields returned
1303
- // by `getAutocompleteProjection`. `query.field` will contain
1304
- // the schema field definition for the relationship the user is attempting
1305
- // to match titles from. The default behavior is to return
1306
- // the `title` property, but since this is a page we are including
1307
- // the slug as well.
1308
- <span class="fstat-no" title="function not covered" > ge</span>tAutocompleteTitle(doc, query) {
1309
- <span class="cstat-no" title="statement not covered" > return doc.title + ' (' + doc.slug + ')';</span>
1310
- },
1311
- // `req` determines what the user is eligible to edit, `criteria`
1312
- // is the MongoDB criteria object, and any properties of `options`
1313
- // are invoked as methods on the query with their values.
1314
- find(req, criteria = {}, options = {}) {
1315
- return self.apos.modules['@apostrophecms/any-page-type'].find(req, criteria, options).type(self.name);
1316
- },
1317
- // Called for you when a page is inserted directly in
1318
- // the published locale, to ensure there is an equivalent
1319
- // draft page. You don't need to invoke this.
1320
- async insertDraftOf(req, doc, draft, options) {
1321
- const _req = req.clone({
1322
- mode: 'draft'
1323
- });
1324
- options = {
1325
- ...options,
1326
- setModified: false
1327
- };
1328
- if (doc.aposLastTargetId) {
1329
- // Replay the high level positioning used to place it in the published locale
1330
- return self.apos.page.insert(_req, doc.aposLastTargetId.replace(':published', ':draft'), doc.aposLastPosition, draft, options);
1331
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!doc.level) {
1332
- // Insert the home page
1333
- return self.apos.doc.insert(_req, draft, options);
1334
- } else {
1335
- <span class="cstat-no" title="statement not covered" > throw new Error('Page inserted without using the page APIs, has no aposLastTargetId and aposLastPosition, cannot insert equivalent draft');</span>
1336
- }
1337
- },
1338
- // Called for you when a page is inserted in
1339
- // the published locale, to ensure there is an equivalent
1340
- // draft page. You don't need to invoke this.
1341
- async insertPublishedOf(req, doc, published, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
1342
- const _req = req.clone({
1343
- mode: 'published'
1344
- });
1345
- if (doc.aposLastTargetId) {
1346
- // Replay the high level positioning used to place it in the published locale
1347
- return self.apos.page.insert(_req, doc.aposLastTargetId.replace(':draft', ':published'), doc.aposLastPosition, published, options);
1348
- } else <span class="missing-if-branch" title="else path not taken" >E</span>if (!doc.level) {
1349
- // Insert the home page
1350
- Object.assign(published, {
1351
- path: doc.path,
1352
- level: doc.level,
1353
- rank: doc.rank,
1354
- parked: doc.parked,
1355
- parkedId: doc.parkedId
1356
- });
1357
- return self.apos.doc.insert(_req, published, options);
1358
- } else {
1359
- <span class="cstat-no" title="statement not covered" > throw new Error('insertPublishedOf called on a page that was never inserted via the standard page APIs, has no aposLastTargetId and aposLastPosition, cannot insert equivalent published page');</span>
1360
- }
1361
- },
1362
- // Update a page. The `options` argument may be omitted entirely.
1363
- // if it is present and `options.permissions` is set to `false`,
1364
- // permissions are not checked.
1365
- //
1366
- // This is a convenience wrapper for `apos.page.update`, for the
1367
- // benefit of code that expects all managers to have an update method.
1368
- // Pages are usually updated via `apos.page.update`.
1369
- async update(req, page, options = {}) {
1370
- return self.apos.page.update(req, page, options);
1371
- },
1372
- // True delete. Will throw an error if the page
1373
- // has descendants.
1374
- //
1375
- // This is a convenience wrapper for `apos.page.delete`, for the
1376
- // benefit of code that expects all managers to have a delete method.
1377
- // Pages are usually deleted via `apos.page.delete`.
1378
- <span class="fstat-no" title="function not covered" > as</span>ync delete(req, page, options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
1379
- <span class="cstat-no" title="statement not covered" > return self.apos.page.delete(req, page, options);</span>
1380
- },
1381
- // If the page does not yet have a slug, add one based on the
1382
- // title; throw an error if there is no title
1383
- ensureSlug(page) {
1384
- if (!page.slug || (!page.slug.match(/^\//))) {
1385
- <span class="missing-if-branch" title="else path not taken" >E</span>if (page.title) {
1386
- // Parent-based slug would be better, but this is not an
1387
- // async function and callers will typically have done
1388
- // that already, so skip the overhead. This is just a fallback
1389
- // for naive use of the APIs
1390
- page.slug = '/' + self.apos.util.slugify(page.title);
1391
- } else {
1392
- <span class="cstat-no" title="statement not covered" > throw self.apos.error('invalid', 'Page has neither a slug beginning with / or a title, giving up');</span>
1393
- }
1394
- }
1395
- }
1396
- };
1397
- },
1398
- extendMethods(self) {
1399
- return {
1400
- enableAction() {
1401
- self.action = self.apos.modules['@apostrophecms/page'].action;
1402
- },
1403
- copyForPublication(_super, req, from, to) {
1404
- _super(req, from, to);
1405
- const newMode = to.aposLocale.endsWith(':published') ? ':published' : ':draft';
1406
- const oldMode = (newMode === ':published') ? ':draft' : ':published';
1407
- // Home pages will not have this
1408
- if (from.aposLastTargetId) {
1409
- to.aposLastTargetId = from.aposLastTargetId.replace(oldMode, newMode);
1410
- to.aposLastPosition = from.aposLastPosition;
1411
- }
1412
- to.parkedId = from.parkedId;
1413
- to.parked = from.parked;
1414
- },
1415
- <span class="fstat-no" title="function not covered" > ge</span>tAutocompleteProjection(_super, query) {
1416
- const projection = <span class="cstat-no" title="statement not covered" >_super(query);</span>
1417
- <span class="cstat-no" title="statement not covered" > projection.slug = 1;</span>
1418
- <span class="cstat-no" title="statement not covered" > return projection;</span>
1419
- },
1420
- // Extend `composeSchema` to flag the use of field names
1421
- // that are forbidden or nonfunctional in page types,
1422
- // i.e. path, rank, level
1423
- composeSchema(_super) {
1424
- _super();
1425
- const forbiddenFields = [
1426
- 'path',
1427
- 'rank',
1428
- 'level'
1429
- ];
1430
- _.each(self.schema, function (field) {
1431
- <span class="missing-if-branch" title="if path not taken" >I</span>if (_.includes(forbiddenFields, field.name)) {
1432
- <span class="cstat-no" title="statement not covered" > throw new Error('Page type ' + self.name + ': the field name ' + field.name + ' is forbidden');</span>
1433
- }
1434
- });
1435
- },
1436
- // Given a page and its parent (if any), returns a schema that is
1437
- // filtered appropriately to that page's type, taking into account whether
1438
- // the page is new, whether it is parked, and the parent's allowed subpage
1439
- // types.
1440
- allowedSchema(_super, req, page = {}, parentPage = {}) {
1441
- let schema = _super(req);
1442
- &nbsp;
1443
- const typeField = _.find(schema, { name: 'type' });
1444
- <span class="missing-if-branch" title="else path not taken" >E</span>if (typeField) {
1445
- const allowed = self.apos.page.allowedChildTypes(parentPage);
1446
- // For a preexisting page, we can't forbid the type it currently has
1447
- <span class="missing-if-branch" title="if path not taken" >I</span>if (page._id &amp;&amp; !_.includes(allowed, page.type)) {
1448
- <span class="cstat-no" title="statement not covered" > allowed.unshift(page.type);</span>
1449
- }
1450
- typeField.choices = _.map(allowed, function (name) {
1451
- return {
1452
- value: name,
1453
- label: getLabel(name)
1454
- };
1455
- });
1456
- }
1457
- if (page._id) {
1458
- // Preexisting page
1459
- schema = self.apos.page.addApplyToSubpagesToSchema(schema);
1460
- schema = self.apos.page.removeParkedPropertiesFromSchema(page, schema);
1461
- }
1462
- return schema;
1463
- function getLabel(name) {
1464
- const choice = _.find(self.apos.page.typeChoices, { name: name });
1465
- let label = choice &amp;&amp; choice.label;
1466
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!label) {
1467
- const manager = <span class="cstat-no" title="statement not covered" >self.apos.doc.getManager(name);</span>
1468
- <span class="cstat-no" title="statement not covered" > if (!manager) {</span>
1469
- <span class="cstat-no" title="statement not covered" > throw new Error(`There is no page type ${name} but it is configured in the types option`);</span>
1470
- }
1471
- <span class="cstat-no" title="statement not covered" > label = manager.label;</span>
1472
- }
1473
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!label) {
1474
- <span class="cstat-no" title="statement not covered" > label = name;</span>
1475
- }
1476
- return label;
1477
- }
1478
- }
1479
- };
1480
- }
1481
- };
1482
- &nbsp;</pre></td></tr></table></pre>
1483
-
1484
- <div class='push'></div><!-- for sticky footer -->
1485
- </div><!-- /wrapper -->
1486
- <div class='footer quiet pad2 space-top1 center small'>
1487
- Code coverage generated by
1488
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1489
- at Wed Jun 08 2022 11:06:49 GMT+0200 (Central European Summer Time)
1490
- </div>
1491
- <script src="../../../../prettify.js"></script>
1492
- <script>
1493
- window.onload = function () {
1494
- prettyPrint();
1495
- };
1496
- </script>
1497
- <script src="../../../../sorter.js"></script>
1498
- <script src="../../../../block-navigation.js"></script>
1499
- </body>
1500
- </html>
1501
-