@react-md/core 1.0.0-next.1 → 1.0.0-next.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 (138) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +8 -0
  3. package/coverage/clover.xml +2 -2
  4. package/coverage/lcov-report/DefaultToastRenderer.tsx.html +166 -112
  5. package/coverage/lcov-report/Snackbar.tsx.html +360 -402
  6. package/coverage/lcov-report/Toast.tsx.html +868 -0
  7. package/coverage/lcov-report/ToastManager.tsx.html +1783 -0
  8. package/coverage/lcov-report/ToastManagerProvider.tsx.html +216 -216
  9. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  10. package/coverage/lcov-report/icon/index.html +1 -1
  11. package/coverage/lcov-report/index.html +1 -1
  12. package/coverage/lcov-report/snackbar/Snackbar.tsx.html +55 -97
  13. package/coverage/lcov-report/snackbar/Toast.tsx.html +546 -501
  14. package/coverage/lcov-report/snackbar/ToastManager.tsx.html +269 -269
  15. package/coverage/lcov-report/snackbar/ToastManagerProvider.tsx.html +23 -23
  16. package/coverage/lcov-report/snackbar/index.html +59 -14
  17. package/coverage/lcov-report/snackbar/snackbarStyles.ts.html +12 -87
  18. package/coverage/lcov-report/snackbar/toastStyles.ts.html +206 -146
  19. package/coverage/lcov-report/snackbar/useCurrentToastActions.ts.html +226 -0
  20. package/coverage/lcov-report/snackbarStyles.ts.html +46 -121
  21. package/coverage/lcov-report/transition/config.ts.html +5 -5
  22. package/coverage/lcov-report/transition/index.html +1 -1
  23. package/coverage/lcov-report/typography/Typography.tsx.html +108 -402
  24. package/coverage/lcov-report/typography/index.html +10 -10
  25. package/dist/_core.scss +34 -1
  26. package/dist/_utils.scss +57 -0
  27. package/dist/app-bar/_app-bar.scss +15 -23
  28. package/dist/avatar/_avatar.scss +25 -34
  29. package/dist/badge/_badge.scss +71 -44
  30. package/dist/box/_box.scss +18 -29
  31. package/dist/button/_button.scss +50 -62
  32. package/dist/card/_card.scss +14 -23
  33. package/dist/chip/_chip.scss +33 -46
  34. package/dist/dialog/_dialog.scss +95 -93
  35. package/dist/divider/Divider.d.ts +0 -1
  36. package/dist/divider/Divider.js.map +1 -1
  37. package/dist/divider/_divider.scss +33 -43
  38. package/dist/form/Label.d.ts +5 -5
  39. package/dist/form/Label.js.map +1 -1
  40. package/dist/form/TextArea.js +1 -1
  41. package/dist/form/TextArea.js.map +1 -1
  42. package/dist/form/TextFieldContainerStyles.d.ts +7 -7
  43. package/dist/form/TextFieldContainerStyles.js.map +1 -1
  44. package/dist/form/_form.scss +200 -203
  45. package/dist/form/textAreaStyles.d.ts +2 -2
  46. package/dist/form/textAreaStyles.js.map +1 -1
  47. package/dist/form/types.d.ts +0 -2
  48. package/dist/form/types.js.map +1 -1
  49. package/dist/icon/_icon.scss +31 -47
  50. package/dist/interaction/_interaction.scss +47 -57
  51. package/dist/layout/_layout.scss +14 -19
  52. package/dist/link/_link.scss +15 -23
  53. package/dist/list/_list.scss +53 -63
  54. package/dist/menu/_menu.scss +16 -27
  55. package/dist/overlay/_overlay.scss +14 -19
  56. package/dist/progress/_progress.scss +25 -30
  57. package/dist/segmented-button/_segmented-button.scss +32 -43
  58. package/dist/sheet/_sheet.scss +24 -42
  59. package/dist/snackbar/DefaultToastRenderer.js +1 -1
  60. package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
  61. package/dist/snackbar/Snackbar.d.ts +1 -3
  62. package/dist/snackbar/Snackbar.js +2 -3
  63. package/dist/snackbar/Snackbar.js.map +1 -1
  64. package/dist/snackbar/Toast.d.ts +1 -1
  65. package/dist/snackbar/Toast.js +5 -1
  66. package/dist/snackbar/Toast.js.map +1 -1
  67. package/dist/snackbar/ToastManager.d.ts +2 -1
  68. package/dist/snackbar/ToastManager.js +1 -1
  69. package/dist/snackbar/ToastManager.js.map +1 -1
  70. package/dist/snackbar/_snackbar.scss +15 -23
  71. package/dist/table/_table.scss +55 -70
  72. package/dist/tabs/_tabs.scss +25 -30
  73. package/dist/theme/_theme.scss +31 -89
  74. package/dist/tooltip/_tooltip.scss +16 -25
  75. package/dist/transition/_transition.scss +38 -37
  76. package/dist/tree/_tree.scss +102 -109
  77. package/dist/typography/_typography.scss +17 -22
  78. package/dist/window-splitter/_window-splitter.scss +19 -45
  79. package/package.json +1 -1
  80. package/src/_core.scss +34 -1
  81. package/src/_utils.scss +57 -0
  82. package/src/app-bar/_app-bar.scss +15 -23
  83. package/src/avatar/_avatar.scss +25 -34
  84. package/src/badge/_badge.scss +71 -44
  85. package/src/box/_box.scss +18 -29
  86. package/src/button/_button.scss +50 -62
  87. package/src/card/_card.scss +14 -23
  88. package/src/chip/_chip.scss +33 -46
  89. package/src/dialog/_dialog.scss +95 -93
  90. package/src/divider/Divider.tsx +0 -1
  91. package/src/divider/_divider.scss +33 -43
  92. package/src/form/Label.tsx +5 -5
  93. package/src/form/TextArea.tsx +1 -1
  94. package/src/form/TextFieldContainerStyles.ts +7 -7
  95. package/src/form/_form.scss +200 -203
  96. package/src/form/textAreaStyles.ts +2 -2
  97. package/src/form/types.ts +0 -2
  98. package/src/icon/_icon.scss +31 -47
  99. package/src/interaction/_interaction.scss +47 -57
  100. package/src/layout/_layout.scss +14 -19
  101. package/src/link/_link.scss +15 -23
  102. package/src/list/_list.scss +53 -63
  103. package/src/menu/_menu.scss +16 -27
  104. package/src/overlay/_overlay.scss +14 -19
  105. package/src/progress/_progress.scss +25 -30
  106. package/src/segmented-button/_segmented-button.scss +32 -43
  107. package/src/sheet/_sheet.scss +24 -42
  108. package/src/snackbar/DefaultToastRenderer.tsx +1 -1
  109. package/src/snackbar/Snackbar.tsx +17 -25
  110. package/src/snackbar/Toast.tsx +7 -2
  111. package/src/snackbar/ToastManager.tsx +3 -2
  112. package/src/snackbar/__tests__/Snackbar.tsx +12 -11
  113. package/src/snackbar/__tests__/ToastManagerProvider.tsx +20 -42
  114. package/src/snackbar/__tests__/__snapshots__/Snackbar.tsx.snap +127 -27
  115. package/src/snackbar/__tests__/__snapshots__/ToastManagerProvider.tsx.snap +23 -8
  116. package/src/snackbar/_snackbar.scss +15 -23
  117. package/src/table/_table.scss +55 -70
  118. package/src/tabs/_tabs.scss +25 -30
  119. package/src/theme/_theme.scss +31 -89
  120. package/src/tooltip/_tooltip.scss +16 -25
  121. package/src/transition/_transition.scss +38 -37
  122. package/src/tree/_tree.scss +102 -109
  123. package/src/typography/_typography.scss +17 -22
  124. package/src/window-splitter/_window-splitter.scss +19 -45
  125. package/.turbo/turbo-lint.log +0 -12
  126. package/.turbo/turbo-test.log +0 -166
  127. package/.turbo/turbo-typecheck.log +0 -4
  128. package/dist/divider/VerticalDivider.d.ts +0 -32
  129. package/dist/divider/useVerticalDividerHeight.d.ts +0 -37
  130. package/dist/icon/MaterialIconsProvider.d.ts +0 -12
  131. package/dist/icon/MaterialIconsProvider.js +0 -17
  132. package/dist/icon/MaterialIconsProvider.js.map +0 -1
  133. package/dist/icon/MaterialSymbolsProvider.d.ts +0 -145
  134. package/dist/icon/MaterialSymbolsProvider.js +0 -60
  135. package/dist/icon/MaterialSymbolsProvider.js.map +0 -1
  136. package/dist/link/LinkProvider.d.ts +0 -29
  137. package/dist/menu/menuConfig.d.ts +0 -60
  138. package/dist/tooltip/useOverflowTooltip.d.ts +0 -61
@@ -0,0 +1,1783 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for ToastManager.tsx</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> ToastManager.tsx</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">98.58% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>558/566</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">95.83% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>69/72</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">95.45% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>21/22</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">98.58% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>558/566</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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
633
+ <span class="cline-any cline-yes">1x</span>
634
+ <span class="cline-any cline-yes">1x</span>
635
+ <span class="cline-any cline-yes">1x</span>
636
+ <span class="cline-any cline-yes">1x</span>
637
+ <span class="cline-any cline-yes">1x</span>
638
+ <span class="cline-any cline-yes">1x</span>
639
+ <span class="cline-any cline-yes">1x</span>
640
+ <span class="cline-any cline-yes">1x</span>
641
+ <span class="cline-any cline-yes">1x</span>
642
+ <span class="cline-any cline-yes">1x</span>
643
+ <span class="cline-any cline-yes">1x</span>
644
+ <span class="cline-any cline-yes">1x</span>
645
+ <span class="cline-any cline-yes">1x</span>
646
+ <span class="cline-any cline-yes">1x</span>
647
+ <span class="cline-any cline-yes">1x</span>
648
+ <span class="cline-any cline-yes">1x</span>
649
+ <span class="cline-any cline-yes">1x</span>
650
+ <span class="cline-any cline-yes">1x</span>
651
+ <span class="cline-any cline-yes">1x</span>
652
+ <span class="cline-any cline-yes">1x</span>
653
+ <span class="cline-any cline-yes">1x</span>
654
+ <span class="cline-any cline-yes">1x</span>
655
+ <span class="cline-any cline-yes">1x</span>
656
+ <span class="cline-any cline-yes">1x</span>
657
+ <span class="cline-any cline-yes">1x</span>
658
+ <span class="cline-any cline-yes">1x</span>
659
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
663
+ <span class="cline-any cline-yes">1x</span>
664
+ <span class="cline-any cline-yes">1x</span>
665
+ <span class="cline-any cline-yes">1x</span>
666
+ <span class="cline-any cline-yes">1x</span>
667
+ <span class="cline-any cline-yes">1x</span>
668
+ <span class="cline-any cline-yes">1x</span>
669
+ <span class="cline-any cline-yes">1x</span>
670
+ <span class="cline-any cline-yes">1x</span>
671
+ <span class="cline-any cline-yes">1x</span>
672
+ <span class="cline-any cline-yes">1x</span>
673
+ <span class="cline-any cline-yes">1x</span>
674
+ <span class="cline-any cline-yes">1x</span>
675
+ <span class="cline-any cline-yes">1x</span>
676
+ <span class="cline-any cline-yes">1x</span>
677
+ <span class="cline-any cline-yes">1x</span>
678
+ <span class="cline-any cline-yes">1x</span>
679
+ <span class="cline-any cline-yes">1x</span>
680
+ <span class="cline-any cline-yes">1x</span>
681
+ <span class="cline-any cline-yes">1x</span>
682
+ <span class="cline-any cline-yes">1x</span>
683
+ <span class="cline-any cline-yes">1x</span>
684
+ <span class="cline-any cline-yes">1x</span>
685
+ <span class="cline-any cline-yes">1x</span>
686
+ <span class="cline-any cline-yes">1x</span>
687
+ <span class="cline-any cline-yes">1x</span>
688
+ <span class="cline-any cline-yes">1x</span>
689
+ <span class="cline-any cline-yes">1x</span>
690
+ <span class="cline-any cline-yes">1x</span>
691
+ <span class="cline-any cline-yes">1x</span>
692
+ <span class="cline-any cline-yes">1x</span>
693
+ <span class="cline-any cline-yes">1x</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-yes">1x</span>
696
+ <span class="cline-any cline-yes">1x</span>
697
+ <span class="cline-any cline-yes">1x</span>
698
+ <span class="cline-any cline-yes">1x</span>
699
+ <span class="cline-any cline-yes">1x</span>
700
+ <span class="cline-any cline-yes">1x</span>
701
+ <span class="cline-any cline-yes">1x</span>
702
+ <span class="cline-any cline-yes">1x</span>
703
+ <span class="cline-any cline-yes">1x</span>
704
+ <span class="cline-any cline-yes">1x</span>
705
+ <span class="cline-any cline-yes">1x</span>
706
+ <span class="cline-any cline-yes">1x</span>
707
+ <span class="cline-any cline-yes">1x</span>
708
+ <span class="cline-any cline-yes">1x</span>
709
+ <span class="cline-any cline-yes">1x</span>
710
+ <span class="cline-any cline-yes">1x</span>
711
+ <span class="cline-any cline-yes">1x</span>
712
+ <span class="cline-any cline-yes">1x</span>
713
+ <span class="cline-any cline-yes">1x</span>
714
+ <span class="cline-any cline-yes">1x</span>
715
+ <span class="cline-any cline-yes">1x</span>
716
+ <span class="cline-any cline-yes">1x</span>
717
+ <span class="cline-any cline-yes">1x</span>
718
+ <span class="cline-any cline-yes">1x</span>
719
+ <span class="cline-any cline-yes">1x</span>
720
+ <span class="cline-any cline-yes">1x</span>
721
+ <span class="cline-any cline-yes">1x</span>
722
+ <span class="cline-any cline-yes">1x</span>
723
+ <span class="cline-any cline-yes">1x</span>
724
+ <span class="cline-any cline-yes">1x</span>
725
+ <span class="cline-any cline-yes">1x</span>
726
+ <span class="cline-any cline-yes">1x</span>
727
+ <span class="cline-any cline-yes">1x</span>
728
+ <span class="cline-any cline-yes">1x</span>
729
+ <span class="cline-any cline-yes">1x</span>
730
+ <span class="cline-any cline-yes">1x</span>
731
+ <span class="cline-any cline-yes">1x</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-yes">1x</span>
734
+ <span class="cline-any cline-yes">1x</span>
735
+ <span class="cline-any cline-yes">1x</span>
736
+ <span class="cline-any cline-yes">1x</span>
737
+ <span class="cline-any cline-yes">1x</span>
738
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
742
+ <span class="cline-any cline-yes">1x</span>
743
+ <span class="cline-any cline-yes">1x</span>
744
+ <span class="cline-any cline-yes">1x</span>
745
+ <span class="cline-any cline-yes">1x</span>
746
+ <span class="cline-any cline-yes">1x</span>
747
+ <span class="cline-any cline-yes">1x</span>
748
+ <span class="cline-any cline-yes">1x</span>
749
+ <span class="cline-any cline-yes">1x</span>
750
+ <span class="cline-any cline-yes">1x</span>
751
+ <span class="cline-any cline-yes">1x</span>
752
+ <span class="cline-any cline-yes">1x</span>
753
+ <span class="cline-any cline-yes">1x</span>
754
+ <span class="cline-any cline-yes">1x</span>
755
+ <span class="cline-any cline-yes">1x</span>
756
+ <span class="cline-any cline-yes">1x</span>
757
+ <span class="cline-any cline-yes">1x</span>
758
+ <span class="cline-any cline-yes">1x</span>
759
+ <span class="cline-any cline-yes">1x</span>
760
+ <span class="cline-any cline-yes">1x</span>
761
+ <span class="cline-any cline-yes">1x</span>
762
+ <span class="cline-any cline-yes">18x</span>
763
+ <span class="cline-any cline-yes">18x</span>
764
+ <span class="cline-any cline-yes">18x</span>
765
+ <span class="cline-any cline-yes">18x</span>
766
+ <span class="cline-any cline-yes">18x</span>
767
+ <span class="cline-any cline-yes">18x</span>
768
+ <span class="cline-any cline-yes">18x</span>
769
+ <span class="cline-any cline-yes">18x</span>
770
+ <span class="cline-any cline-yes">18x</span>
771
+ <span class="cline-any cline-yes">18x</span>
772
+ <span class="cline-any cline-yes">18x</span>
773
+ <span class="cline-any cline-yes">18x</span>
774
+ <span class="cline-any cline-yes">18x</span>
775
+ <span class="cline-any cline-yes">18x</span>
776
+ <span class="cline-any cline-yes">18x</span>
777
+ <span class="cline-any cline-yes">18x</span>
778
+ <span class="cline-any cline-yes">18x</span>
779
+ <span class="cline-any cline-yes">18x</span>
780
+ <span class="cline-any cline-yes">18x</span>
781
+ <span class="cline-any cline-yes">18x</span>
782
+ <span class="cline-any cline-yes">18x</span>
783
+ <span class="cline-any cline-yes">18x</span>
784
+ <span class="cline-any cline-yes">108x</span>
785
+ <span class="cline-any cline-yes">108x</span>
786
+ <span class="cline-any cline-yes">108x</span>
787
+ <span class="cline-any cline-yes">104x</span>
788
+ <span class="cline-any cline-yes">104x</span>
789
+ <span class="cline-any cline-yes">108x</span>
790
+ <span class="cline-any cline-yes">18x</span>
791
+ <span class="cline-any cline-yes">18x</span>
792
+ <span class="cline-any cline-yes">151x</span>
793
+ <span class="cline-any cline-yes">30x</span>
794
+ <span class="cline-any cline-yes">30x</span>
795
+ <span class="cline-any cline-yes">121x</span>
796
+ <span class="cline-any cline-yes">121x</span>
797
+ <span class="cline-any cline-yes">121x</span>
798
+ <span class="cline-any cline-yes">18x</span>
799
+ <span class="cline-any cline-yes">18x</span>
800
+ <span class="cline-any cline-yes">44x</span>
801
+ <span class="cline-any cline-yes">44x</span>
802
+ <span class="cline-any cline-yes">18x</span>
803
+ <span class="cline-any cline-yes">18x</span>
804
+ <span class="cline-any cline-yes">18x</span>
805
+ <span class="cline-any cline-yes">18x</span>
806
+ <span class="cline-any cline-yes">18x</span>
807
+ <span class="cline-any cline-yes">18x</span>
808
+ <span class="cline-any cline-yes">18x</span>
809
+ <span class="cline-any cline-yes">3x</span>
810
+ <span class="cline-any cline-yes">3x</span>
811
+ <span class="cline-any cline-yes">3x</span>
812
+ <span class="cline-any cline-yes">3x</span>
813
+ <span class="cline-any cline-yes">3x</span>
814
+ <span class="cline-any cline-yes">3x</span>
815
+ <span class="cline-any cline-yes">3x</span>
816
+ <span class="cline-any cline-yes">1x</span>
817
+ <span class="cline-any cline-yes">3x</span>
818
+ <span class="cline-any cline-yes">2x</span>
819
+ <span class="cline-any cline-yes">2x</span>
820
+ <span class="cline-any cline-yes">3x</span>
821
+ <span class="cline-any cline-yes">18x</span>
822
+ <span class="cline-any cline-yes">18x</span>
823
+ <span class="cline-any cline-yes">18x</span>
824
+ <span class="cline-any cline-yes">18x</span>
825
+ <span class="cline-any cline-yes">18x</span>
826
+ <span class="cline-any cline-yes">34x</span>
827
+ <span class="cline-any cline-yes">34x</span>
828
+ <span class="cline-any cline-yes">34x</span>
829
+ <span class="cline-any cline-yes">34x</span>
830
+ <span class="cline-any cline-yes">34x</span>
831
+ <span class="cline-any cline-yes">32x</span>
832
+ <span class="cline-any cline-yes">2x</span>
833
+ <span class="cline-any cline-yes">34x</span>
834
+ <span class="cline-any cline-yes">34x</span>
835
+ <span class="cline-any cline-no">&nbsp;</span>
836
+ <span class="cline-any cline-no">&nbsp;</span>
837
+ <span class="cline-any cline-yes">34x</span>
838
+ <span class="cline-any cline-yes">34x</span>
839
+ <span class="cline-any cline-yes">34x</span>
840
+ <span class="cline-any cline-yes">34x</span>
841
+ <span class="cline-any cline-yes">34x</span>
842
+ <span class="cline-any cline-yes">34x</span>
843
+ <span class="cline-any cline-yes">34x</span>
844
+ <span class="cline-any cline-yes">18x</span>
845
+ <span class="cline-any cline-yes">18x</span>
846
+ <span class="cline-any cline-yes">18x</span>
847
+ <span class="cline-any cline-yes">18x</span>
848
+ <span class="cline-any cline-yes">18x</span>
849
+ <span class="cline-any cline-yes">18x</span>
850
+ <span class="cline-any cline-yes">18x</span>
851
+ <span class="cline-any cline-yes">18x</span>
852
+ <span class="cline-any cline-yes">18x</span>
853
+ <span class="cline-any cline-yes">18x</span>
854
+ <span class="cline-any cline-yes">18x</span>
855
+ <span class="cline-any cline-yes">18x</span>
856
+ <span class="cline-any cline-yes">18x</span>
857
+ <span class="cline-any cline-yes">18x</span>
858
+ <span class="cline-any cline-yes">18x</span>
859
+ <span class="cline-any cline-yes">18x</span>
860
+ <span class="cline-any cline-yes">18x</span>
861
+ <span class="cline-any cline-yes">18x</span>
862
+ <span class="cline-any cline-yes">18x</span>
863
+ <span class="cline-any cline-yes">18x</span>
864
+ <span class="cline-any cline-yes">18x</span>
865
+ <span class="cline-any cline-yes">18x</span>
866
+ <span class="cline-any cline-yes">18x</span>
867
+ <span class="cline-any cline-yes">18x</span>
868
+ <span class="cline-any cline-yes">18x</span>
869
+ <span class="cline-any cline-yes">18x</span>
870
+ <span class="cline-any cline-yes">18x</span>
871
+ <span class="cline-any cline-yes">471x</span>
872
+ <span class="cline-any cline-yes">471x</span>
873
+ <span class="cline-any cline-yes">18x</span>
874
+ <span class="cline-any cline-yes">18x</span>
875
+ <span class="cline-any cline-yes">18x</span>
876
+ <span class="cline-any cline-yes">18x</span>
877
+ <span class="cline-any cline-yes">18x</span>
878
+ <span class="cline-any cline-yes">18x</span>
879
+ <span class="cline-any cline-yes">18x</span>
880
+ <span class="cline-any cline-yes">18x</span>
881
+ <span class="cline-any cline-yes">18x</span>
882
+ <span class="cline-any cline-yes">18x</span>
883
+ <span class="cline-any cline-yes">18x</span>
884
+ <span class="cline-any cline-yes">18x</span>
885
+ <span class="cline-any cline-yes">18x</span>
886
+ <span class="cline-any cline-yes">18x</span>
887
+ <span class="cline-any cline-yes">18x</span>
888
+ <span class="cline-any cline-yes">18x</span>
889
+ <span class="cline-any cline-yes">18x</span>
890
+ <span class="cline-any cline-yes">18x</span>
891
+ <span class="cline-any cline-yes">18x</span>
892
+ <span class="cline-any cline-yes">18x</span>
893
+ <span class="cline-any cline-yes">18x</span>
894
+ <span class="cline-any cline-yes">18x</span>
895
+ <span class="cline-any cline-yes">18x</span>
896
+ <span class="cline-any cline-yes">18x</span>
897
+ <span class="cline-any cline-yes">18x</span>
898
+ <span class="cline-any cline-yes">18x</span>
899
+ <span class="cline-any cline-yes">18x</span>
900
+ <span class="cline-any cline-yes">18x</span>
901
+ <span class="cline-any cline-yes">18x</span>
902
+ <span class="cline-any cline-yes">18x</span>
903
+ <span class="cline-any cline-yes">18x</span>
904
+ <span class="cline-any cline-yes">18x</span>
905
+ <span class="cline-any cline-yes">18x</span>
906
+ <span class="cline-any cline-yes">18x</span>
907
+ <span class="cline-any cline-yes">18x</span>
908
+ <span class="cline-any cline-yes">18x</span>
909
+ <span class="cline-any cline-yes">18x</span>
910
+ <span class="cline-any cline-yes">18x</span>
911
+ <span class="cline-any cline-yes">18x</span>
912
+ <span class="cline-any cline-yes">18x</span>
913
+ <span class="cline-any cline-yes">18x</span>
914
+ <span class="cline-any cline-yes">18x</span>
915
+ <span class="cline-any cline-yes">18x</span>
916
+ <span class="cline-any cline-yes">18x</span>
917
+ <span class="cline-any cline-yes">18x</span>
918
+ <span class="cline-any cline-yes">18x</span>
919
+ <span class="cline-any cline-yes">18x</span>
920
+ <span class="cline-any cline-yes">18x</span>
921
+ <span class="cline-any cline-yes">18x</span>
922
+ <span class="cline-any cline-yes">18x</span>
923
+ <span class="cline-any cline-yes">18x</span>
924
+ <span class="cline-any cline-yes">18x</span>
925
+ <span class="cline-any cline-yes">18x</span>
926
+ <span class="cline-any cline-yes">18x</span>
927
+ <span class="cline-any cline-yes">18x</span>
928
+ <span class="cline-any cline-yes">18x</span>
929
+ <span class="cline-any cline-yes">18x</span>
930
+ <span class="cline-any cline-yes">18x</span>
931
+ <span class="cline-any cline-yes">18x</span>
932
+ <span class="cline-any cline-yes">18x</span>
933
+ <span class="cline-any cline-yes">18x</span>
934
+ <span class="cline-any cline-yes">18x</span>
935
+ <span class="cline-any cline-yes">48x</span>
936
+ <span class="cline-any cline-yes">48x</span>
937
+ <span class="cline-any cline-yes">48x</span>
938
+ <span class="cline-any cline-yes">48x</span>
939
+ <span class="cline-any cline-yes">48x</span>
940
+ <span class="cline-any cline-yes">48x</span>
941
+ <span class="cline-any cline-yes">48x</span>
942
+ <span class="cline-any cline-yes">48x</span>
943
+ <span class="cline-any cline-yes">48x</span>
944
+ <span class="cline-any cline-yes">48x</span>
945
+ <span class="cline-any cline-yes">6x</span>
946
+ <span class="cline-any cline-yes">6x</span>
947
+ <span class="cline-any cline-yes">6x</span>
948
+ <span class="cline-any cline-yes">6x</span>
949
+ <span class="cline-any cline-yes">6x</span>
950
+ <span class="cline-any cline-yes">6x</span>
951
+ <span class="cline-any cline-yes">1x</span>
952
+ <span class="cline-any cline-yes">1x</span>
953
+ <span class="cline-any cline-yes">1x</span>
954
+ <span class="cline-any cline-yes">1x</span>
955
+ <span class="cline-any cline-yes">1x</span>
956
+ <span class="cline-any cline-yes">5x</span>
957
+ <span class="cline-any cline-yes">5x</span>
958
+ <span class="cline-any cline-yes">5x</span>
959
+ <span class="cline-any cline-yes">6x</span>
960
+ <span class="cline-any cline-yes">3x</span>
961
+ <span class="cline-any cline-yes">6x</span>
962
+ <span class="cline-any cline-yes">1x</span>
963
+ <span class="cline-any cline-yes">1x</span>
964
+ <span class="cline-any cline-yes">1x</span>
965
+ <span class="cline-any cline-yes">1x</span>
966
+ <span class="cline-any cline-yes">1x</span>
967
+ <span class="cline-any cline-yes">1x</span>
968
+ <span class="cline-any cline-yes">1x</span>
969
+ <span class="cline-any cline-yes">1x</span>
970
+ <span class="cline-any cline-yes">4x</span>
971
+ <span class="cline-any cline-yes">4x</span>
972
+ <span class="cline-any cline-yes">6x</span>
973
+ <span class="cline-any cline-yes">4x</span>
974
+ <span class="cline-any cline-yes">4x</span>
975
+ <span class="cline-any cline-yes">4x</span>
976
+ <span class="cline-any cline-yes">4x</span>
977
+ <span class="cline-any cline-yes">4x</span>
978
+ <span class="cline-any cline-yes">4x</span>
979
+ <span class="cline-any cline-yes">4x</span>
980
+ <span class="cline-any cline-yes">42x</span>
981
+ <span class="cline-any cline-yes">42x</span>
982
+ <span class="cline-any cline-yes">42x</span>
983
+ <span class="cline-any cline-yes">42x</span>
984
+ <span class="cline-any cline-yes">42x</span>
985
+ <span class="cline-any cline-yes">42x</span>
986
+ <span class="cline-any cline-yes">42x</span>
987
+ <span class="cline-any cline-yes">42x</span>
988
+ <span class="cline-any cline-yes">42x</span>
989
+ <span class="cline-any cline-yes">42x</span>
990
+ <span class="cline-any cline-yes">42x</span>
991
+ <span class="cline-any cline-yes">42x</span>
992
+ <span class="cline-any cline-yes">42x</span>
993
+ <span class="cline-any cline-yes">48x</span>
994
+ <span class="cline-any cline-yes">1x</span>
995
+ <span class="cline-any cline-yes">48x</span>
996
+ <span class="cline-any cline-yes">41x</span>
997
+ <span class="cline-any cline-yes">4x</span>
998
+ <span class="cline-any cline-yes">41x</span>
999
+ <span class="cline-any cline-yes">2x</span>
1000
+ <span class="cline-any cline-yes">41x</span>
1001
+ <span class="cline-any cline-yes">39x</span>
1002
+ <span class="cline-any cline-yes">39x</span>
1003
+ <span class="cline-any cline-yes">42x</span>
1004
+ <span class="cline-any cline-yes">42x</span>
1005
+ <span class="cline-any cline-yes">42x</span>
1006
+ <span class="cline-any cline-yes">18x</span>
1007
+ <span class="cline-any cline-yes">18x</span>
1008
+ <span class="cline-any cline-yes">18x</span>
1009
+ <span class="cline-any cline-yes">18x</span>
1010
+ <span class="cline-any cline-yes">18x</span>
1011
+ <span class="cline-any cline-yes">18x</span>
1012
+ <span class="cline-any cline-yes">18x</span>
1013
+ <span class="cline-any cline-yes">18x</span>
1014
+ <span class="cline-any cline-yes">40x</span>
1015
+ <span class="cline-any cline-yes">40x</span>
1016
+ <span class="cline-any cline-no">&nbsp;</span>
1017
+ <span class="cline-any cline-no">&nbsp;</span>
1018
+ <span class="cline-any cline-yes">40x</span>
1019
+ <span class="cline-any cline-yes">40x</span>
1020
+ <span class="cline-any cline-yes">40x</span>
1021
+ <span class="cline-any cline-yes">1x</span>
1022
+ <span class="cline-any cline-yes">1x</span>
1023
+ <span class="cline-any cline-yes">1x</span>
1024
+ <span class="cline-any cline-yes">39x</span>
1025
+ <span class="cline-any cline-yes">39x</span>
1026
+ <span class="cline-any cline-yes">40x</span>
1027
+ <span class="cline-any cline-yes">33x</span>
1028
+ <span class="cline-any cline-yes">33x</span>
1029
+ <span class="cline-any cline-yes">33x</span>
1030
+ <span class="cline-any cline-yes">33x</span>
1031
+ <span class="cline-any cline-yes">40x</span>
1032
+ <span class="cline-any cline-yes">40x</span>
1033
+ <span class="cline-any cline-yes">40x</span>
1034
+ <span class="cline-any cline-yes">40x</span>
1035
+ <span class="cline-any cline-yes">2x</span>
1036
+ <span class="cline-any cline-yes">2x</span>
1037
+ <span class="cline-any cline-yes">39x</span>
1038
+ <span class="cline-any cline-yes">39x</span>
1039
+ <span class="cline-any cline-yes">39x</span>
1040
+ <span class="cline-any cline-yes">25x</span>
1041
+ <span class="cline-any cline-yes">39x</span>
1042
+ <span class="cline-any cline-yes">39x</span>
1043
+ <span class="cline-any cline-yes">39x</span>
1044
+ <span class="cline-any cline-yes">18x</span>
1045
+ <span class="cline-any cline-yes">18x</span>
1046
+ <span class="cline-any cline-yes">18x</span>
1047
+ <span class="cline-any cline-yes">18x</span>
1048
+ <span class="cline-any cline-yes">18x</span>
1049
+ <span class="cline-any cline-yes">18x</span>
1050
+ <span class="cline-any cline-yes">18x</span>
1051
+ <span class="cline-any cline-yes">18x</span>
1052
+ <span class="cline-any cline-yes">4x</span>
1053
+ <span class="cline-any cline-yes">4x</span>
1054
+ <span class="cline-any cline-yes">4x</span>
1055
+ <span class="cline-any cline-yes">2x</span>
1056
+ <span class="cline-any cline-yes">2x</span>
1057
+ <span class="cline-any cline-yes">2x</span>
1058
+ <span class="cline-any cline-yes">2x</span>
1059
+ <span class="cline-any cline-yes">2x</span>
1060
+ <span class="cline-any cline-yes">2x</span>
1061
+ <span class="cline-any cline-yes">2x</span>
1062
+ <span class="cline-any cline-yes">2x</span>
1063
+ <span class="cline-any cline-yes">2x</span>
1064
+ <span class="cline-any cline-yes">2x</span>
1065
+ <span class="cline-any cline-yes">18x</span>
1066
+ <span class="cline-any cline-yes">18x</span>
1067
+ <span class="cline-any cline-yes">18x</span>
1068
+ <span class="cline-any cline-yes">18x</span>
1069
+ <span class="cline-any cline-yes">18x</span>
1070
+ <span class="cline-any cline-yes">18x</span>
1071
+ <span class="cline-any cline-yes">18x</span>
1072
+ <span class="cline-any cline-yes">18x</span>
1073
+ <span class="cline-any cline-yes">2x</span>
1074
+ <span class="cline-any cline-yes">2x</span>
1075
+ <span class="cline-any cline-yes">2x</span>
1076
+ <span class="cline-any cline-no">&nbsp;</span>
1077
+ <span class="cline-any cline-no">&nbsp;</span>
1078
+ <span class="cline-any cline-yes">2x</span>
1079
+ <span class="cline-any cline-yes">2x</span>
1080
+ <span class="cline-any cline-yes">2x</span>
1081
+ <span class="cline-any cline-yes">2x</span>
1082
+ <span class="cline-any cline-yes">18x</span>
1083
+ <span class="cline-any cline-yes">18x</span>
1084
+ <span class="cline-any cline-yes">18x</span>
1085
+ <span class="cline-any cline-yes">18x</span>
1086
+ <span class="cline-any cline-yes">18x</span>
1087
+ <span class="cline-any cline-yes">18x</span>
1088
+ <span class="cline-any cline-yes">18x</span>
1089
+ <span class="cline-any cline-yes">18x</span>
1090
+ <span class="cline-any cline-yes">18x</span>
1091
+ <span class="cline-any cline-yes">55x</span>
1092
+ <span class="cline-any cline-yes">55x</span>
1093
+ <span class="cline-any cline-yes">1x</span>
1094
+ <span class="cline-any cline-yes">1x</span>
1095
+ <span class="cline-any cline-yes">54x</span>
1096
+ <span class="cline-any cline-yes">55x</span>
1097
+ <span class="cline-any cline-yes">26x</span>
1098
+ <span class="cline-any cline-yes">26x</span>
1099
+ <span class="cline-any cline-yes">26x</span>
1100
+ <span class="cline-any cline-yes">26x</span>
1101
+ <span class="cline-any cline-yes">28x</span>
1102
+ <span class="cline-any cline-yes">28x</span>
1103
+ <span class="cline-any cline-yes">28x</span>
1104
+ <span class="cline-any cline-yes">28x</span>
1105
+ <span class="cline-any cline-yes">18x</span>
1106
+ <span class="cline-any cline-yes">18x</span>
1107
+ <span class="cline-any cline-yes">18x</span>
1108
+ <span class="cline-any cline-yes">18x</span>
1109
+ <span class="cline-any cline-yes">18x</span>
1110
+ <span class="cline-any cline-yes">18x</span>
1111
+ <span class="cline-any cline-yes">18x</span>
1112
+ <span class="cline-any cline-yes">18x</span>
1113
+ <span class="cline-any cline-yes">18x</span>
1114
+ <span class="cline-any cline-yes">18x</span>
1115
+ <span class="cline-any cline-yes">18x</span>
1116
+ <span class="cline-any cline-yes">18x</span>
1117
+ <span class="cline-any cline-yes">18x</span>
1118
+ <span class="cline-any cline-yes">18x</span>
1119
+ <span class="cline-any cline-yes">18x</span>
1120
+ <span class="cline-any cline-yes">18x</span>
1121
+ <span class="cline-any cline-yes">18x</span>
1122
+ <span class="cline-any cline-yes">18x</span>
1123
+ <span class="cline-any cline-yes">18x</span>
1124
+ <span class="cline-any cline-yes">69x</span>
1125
+ <span class="cline-any cline-yes">69x</span>
1126
+ <span class="cline-any cline-yes">69x</span>
1127
+ <span class="cline-any cline-yes">69x</span>
1128
+ <span class="cline-any cline-yes">18x</span>
1129
+ <span class="cline-any cline-yes">18x</span>
1130
+ <span class="cline-any cline-yes">18x</span>
1131
+ <span class="cline-any cline-yes">18x</span>
1132
+ <span class="cline-any cline-yes">18x</span>
1133
+ <span class="cline-any cline-yes">18x</span>
1134
+ <span class="cline-any cline-yes">1x</span>
1135
+ <span class="cline-any cline-yes">1x</span>
1136
+ <span class="cline-any cline-yes">1x</span>
1137
+ <span class="cline-any cline-yes">18x</span>
1138
+ <span class="cline-any cline-yes">18x</span>
1139
+ <span class="cline-any cline-yes">18x</span>
1140
+ <span class="cline-any cline-yes">18x</span>
1141
+ <span class="cline-any cline-yes">18x</span>
1142
+ <span class="cline-any cline-yes">18x</span>
1143
+ <span class="cline-any cline-yes">18x</span>
1144
+ <span class="cline-any cline-yes">18x</span>
1145
+ <span class="cline-any cline-yes">4x</span>
1146
+ <span class="cline-any cline-yes">4x</span>
1147
+ <span class="cline-any cline-yes">1x</span>
1148
+ <span class="cline-any cline-yes">1x</span>
1149
+ <span class="cline-any cline-yes">4x</span>
1150
+ <span class="cline-any cline-yes">4x</span>
1151
+ <span class="cline-any cline-yes">1x</span>
1152
+ <span class="cline-any cline-yes">1x</span>
1153
+ <span class="cline-any cline-yes">4x</span>
1154
+ <span class="cline-any cline-yes">18x</span>
1155
+ <span class="cline-any cline-yes">1x</span>
1156
+ <span class="cline-any cline-yes">1x</span>
1157
+ <span class="cline-any cline-yes">1x</span>
1158
+ <span class="cline-any cline-yes">1x</span>
1159
+ <span class="cline-any cline-yes">1x</span>
1160
+ <span class="cline-any cline-yes">1x</span>
1161
+ <span class="cline-any cline-yes">1x</span>
1162
+ <span class="cline-any cline-yes">1x</span>
1163
+ <span class="cline-any cline-yes">1x</span>
1164
+ <span class="cline-any cline-yes">1x</span>
1165
+ <span class="cline-any cline-yes">1x</span>
1166
+ <span class="cline-any cline-yes">1x</span>
1167
+ <span class="cline-any cline-yes">1x</span>
1168
+ <span class="cline-any cline-yes">1x</span>
1169
+ <span class="cline-any cline-yes">1x</span>
1170
+ <span class="cline-any cline-yes">8x</span>
1171
+ <span class="cline-any cline-yes">1x</span>
1172
+ <span class="cline-any cline-yes">1x</span>
1173
+ <span class="cline-any cline-yes">1x</span>
1174
+ <span class="cline-any cline-yes">1x</span>
1175
+ <span class="cline-any cline-yes">1x</span>
1176
+ <span class="cline-any cline-yes">1x</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-yes">1x</span>
1180
+ <span class="cline-any cline-yes">1x</span>
1181
+ <span class="cline-any cline-yes">1x</span>
1182
+ <span class="cline-any cline-yes">1x</span>
1183
+ <span class="cline-any cline-yes">1x</span>
1184
+ <span class="cline-any cline-yes">1x</span>
1185
+ <span class="cline-any cline-yes">1x</span>
1186
+ <span class="cline-any cline-yes">1x</span>
1187
+ <span class="cline-any cline-yes">1x</span>
1188
+ <span class="cline-any cline-yes">1x</span>
1189
+ <span class="cline-any cline-yes">1x</span>
1190
+ <span class="cline-any cline-yes">1x</span>
1191
+ <span class="cline-any cline-yes">2x</span>
1192
+ <span class="cline-any cline-yes">1x</span>
1193
+ <span class="cline-any cline-yes">1x</span>
1194
+ <span class="cline-any cline-yes">1x</span>
1195
+ <span class="cline-any cline-yes">1x</span>
1196
+ <span class="cline-any cline-yes">1x</span>
1197
+ <span class="cline-any cline-yes">1x</span>
1198
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { nanoid } from "nanoid";
1199
+ import { type ConfigurableToastProps } from "./Toast.js";
1200
+ &nbsp;
1201
+ /**
1202
+ * @remarks \@since 6.0.0
1203
+ */
1204
+ export const DEFAULT_TOAST_VISIBLE_TIME = 5000;
1205
+ &nbsp;
1206
+ /**
1207
+ * - `"normal"` - the toast will be added to the end of the queue
1208
+ * - `"next"` - the toast will be inserted next-in-line in the queue, waiting
1209
+ * for the current visible toast to exit before being shown. If the toast does
1210
+ * not support duplicates, the existing toast will be moved instead and merged
1211
+ * with the toast.
1212
+ * - `"replace"` - if there is a currently visible toast, it will start the
1213
+ * leave transition and display the newly added toast instead.
1214
+ * - `"immediate"` - the same behavior as `"replace"` except that if there was a
1215
+ * currently visible toast, it will be shown once the newly added toast again.
1216
+ *
1217
+ * @remarks \@since 6.0.0 Renamed from `MessagePriority` to `ToastPriority`
1218
+ */
1219
+ export type ToastPriority = "normal" | "next" | "replace" | "immediate";
1220
+ &nbsp;
1221
+ /**
1222
+ * - `"allow"` - toasts with the same `toastId` can be added into the queue, but
1223
+ * the leave timeout behavior might not work if multiple toasts can be shown
1224
+ * at the same time.
1225
+ * - `"restart"` - (default) toasts that have the same `toastId` as a toast
1226
+ * being shown will restart the exit timeout and update the toast with any
1227
+ * differences in the toast. If the toast is not currently being shown, a new
1228
+ * toast will not be added.
1229
+ * - `"update"` - toasts that have the same `toastId` will just update the toast
1230
+ * with the latest content while maintaining any existing timeouts
1231
+ *
1232
+ * @remarks \@since 6.0.0 Renamed from `DuplicateBehavior`
1233
+ */
1234
+ export type ToastDuplicateBehavior = "allow" | "restart" | "update";
1235
+ &nbsp;
1236
+ /**
1237
+ * @remarks \@since 6.0.0
1238
+ */
1239
+ export interface ToastMeta {
1240
+ /**
1241
+ * This will be `true` if the exit timeout has been paused either by hovering
1242
+ * the toast or the page has become inactive through blur or minimizing.
1243
+ */
1244
+ paused: boolean;
1245
+ &nbsp;
1246
+ /**
1247
+ * This will be `true` when the toast should be visible and `false` during the
1248
+ * exit animation.
1249
+ */
1250
+ visible: boolean;
1251
+ &nbsp;
1252
+ /**
1253
+ * The current toast's id which can be used with the:
1254
+ * - {@link ToastManager.removeToast}
1255
+ * - {@link ToastManager.startRemoveTimeout}
1256
+ * - {@link ToastManager.pauseRemoveTimeout}
1257
+ * - {@link ToastManager.resumeRemoveTimeout}
1258
+ */
1259
+ toastId: string;
1260
+ priority: ToastPriority;
1261
+ duplicates: ToastDuplicateBehavior;
1262
+ visibleTime: number | null;
1263
+ }
1264
+ &nbsp;
1265
+ /**
1266
+ * @remarks \@since 6.0.0
1267
+ */
1268
+ export interface CreateToastOptions extends ConfigurableToastProps {
1269
+ /**
1270
+ * @defaultValue `nanoid()`
1271
+ */
1272
+ toastId?: string;
1273
+ &nbsp;
1274
+ /**
1275
+ * @see {@link ToastDuplicateBehavior}
1276
+ * @defaultValue `"restart"`
1277
+ */
1278
+ duplicates?: ToastDuplicateBehavior;
1279
+ &nbsp;
1280
+ /**
1281
+ * @see {@link ToastPriority}
1282
+ * @defaultValue `"normal"`
1283
+ */
1284
+ priority?: ToastPriority;
1285
+ &nbsp;
1286
+ /**
1287
+ * Set this to `null` to prevent the toast from automatically hiding,
1288
+ * otherwise set this to the number of milliseconds to remain visible.
1289
+ *
1290
+ * @see {@link DEFAULT_TOAST_VISIBLE_TIME}
1291
+ * @defaultValue `DEFAULT_TOAST_VISIBLE_TIME`
1292
+ */
1293
+ visibleTime?: number | null;
1294
+ }
1295
+ &nbsp;
1296
+ /**
1297
+ * @remarks \@since 6.0.0
1298
+ */
1299
+ export interface QueuedToast extends ConfigurableToastProps, ToastMeta {}
1300
+ &nbsp;
1301
+ /**
1302
+ * @remarks \@since 6.0.0
1303
+ */
1304
+ export type ToastQueue = readonly Readonly&lt;QueuedToast&gt;[];
1305
+ &nbsp;
1306
+ /**
1307
+ * @remarks \@since 6.0.0
1308
+ */
1309
+ export type ToastCallback = (queue: ToastQueue) =&gt; void;
1310
+ &nbsp;
1311
+ /**
1312
+ * @internal
1313
+ * @remarks \@since 6.0.0
1314
+ */
1315
+ export interface ToastVisibilityTimers {
1316
+ inactive: boolean;
1317
+ startTime: number;
1318
+ elapsedTime: number;
1319
+ exitTimeout?: number;
1320
+ }
1321
+ &nbsp;
1322
+ /**
1323
+ * @see {@link ToastManagerProvider}
1324
+ *
1325
+ * @remarks \@since 6.0.0
1326
+ */
1327
+ export class ToastManager {
1328
+ #queue: QueuedToast[];
1329
+ #timers: Map&lt;string, ToastVisibilityTimers&gt;;
1330
+ #listeners: ToastCallback[];
1331
+ &nbsp;
1332
+ constructor() {
1333
+ this.#queue = [];
1334
+ this.#timers = new Map();
1335
+ this.#listeners = [];
1336
+ &nbsp;
1337
+ // All of the class methods must be arrow functions to preserve the correct
1338
+ // `this` value. If they aren't arrow functions, I'd have to wrap each call
1339
+ // in an arrow function to work.
1340
+ //
1341
+ // i.e.
1342
+ // useSyncExternalStore(
1343
+ // (cb) =&gt; manager.subscribe(cb),
1344
+ // () =&gt; manager.getQueue(),
1345
+ // () =&gt; manager.getQueue(),
1346
+ // );
1347
+ }
1348
+ &nbsp;
1349
+ #emit = (): void =&gt; {
1350
+ // shallow clone to ensure react updates
1351
+ this.#queue = [...this.#queue];
1352
+ this.#listeners.forEach((callback) =&gt; {
1353
+ callback(this.#queue);
1354
+ });
1355
+ };
1356
+ &nbsp;
1357
+ #getToastIndex = (toastId: string | undefined): number =&gt; {
1358
+ if (!toastId) {
1359
+ return -1;
1360
+ }
1361
+ &nbsp;
1362
+ return this.#queue.findIndex((toast) =&gt; toast.toastId === toastId);
1363
+ };
1364
+ &nbsp;
1365
+ #getToast = (toastId: string | undefined): QueuedToast | undefined =&gt; {
1366
+ return this.#queue[this.#getToastIndex(toastId)];
1367
+ };
1368
+ &nbsp;
1369
+ /**
1370
+ * Starts the exit transition for the currently shown toast and adds the next
1371
+ * toast into the queue. This requires a manual call to `this.#emit()`
1372
+ * afterwards.
1373
+ */
1374
+ #addToastImmediately = (nextToast: QueuedToast): void =&gt; {
1375
+ const [current] = this.#queue;
1376
+ this.clearTimer(current.toastId);
1377
+ this.#queue[0] = {
1378
+ ...current,
1379
+ visible: false,
1380
+ };
1381
+ if (nextToast.priority === "immediate") {
1382
+ this.#queue.splice(1, 0, nextToast, current);
1383
+ } else {
1384
+ this.#queue.splice(1, 0, nextToast);
1385
+ }
1386
+ };
1387
+ &nbsp;
1388
+ /**
1389
+ * This calls `this.#emit()` if the toast was updated
1390
+ */
1391
+ #updateToast = (
1392
+ toastIdOrIndex: string | number,
1393
+ patch: Partial&lt;QueuedToast&gt;
1394
+ ): void =&gt; {
1395
+ const index =
1396
+ typeof toastIdOrIndex === "number"
1397
+ ? toastIdOrIndex
1398
+ : this.#getToastIndex(toastIdOrIndex);
1399
+ &nbsp;
1400
+ if (index === -1) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1401
+ <span class="cstat-no" title="statement not covered" > return;</span>
1402
+ <span class="cstat-no" title="statement not covered" > }</span>
1403
+ &nbsp;
1404
+ this.#queue[index] = {
1405
+ ...this.#queue[index],
1406
+ ...patch,
1407
+ };
1408
+ this.#emit();
1409
+ };
1410
+ &nbsp;
1411
+ /**
1412
+ * This is just used to subscribe to changes in the {@link useToastQueue}.
1413
+ *
1414
+ * ```tsx
1415
+ * useSyncExternalStore(
1416
+ * toastManager.subscribe,
1417
+ * toastManager.getQueue,
1418
+ * toastManager.getQueue,
1419
+ * );
1420
+ * ```
1421
+ *
1422
+ * @internal
1423
+ */
1424
+ subscribe = (callback: ToastCallback): (() =&gt; void) =&gt; {
1425
+ this.#listeners.push(callback);
1426
+ &nbsp;
1427
+ return () =&gt; {
1428
+ this.#listeners = this.#listeners.filter((cb) =&gt; cb !== callback);
1429
+ };
1430
+ };
1431
+ &nbsp;
1432
+ /**
1433
+ * @see {@link subscribe}
1434
+ * @internal
1435
+ */
1436
+ getQueue = (): ToastQueue =&gt; {
1437
+ return this.#queue;
1438
+ };
1439
+ &nbsp;
1440
+ /**
1441
+ * Either adds the toast to the queue or updates an existing toast when using
1442
+ * an existing `toastId`.
1443
+ *
1444
+ * @example
1445
+ * Adding toasts
1446
+ * ```tsx
1447
+ * // create a toast when the user is offline that will not disappear
1448
+ * addToast({ toastId: "offline", visibleTime: null });
1449
+ *
1450
+ * // add a new toast that displays `"Toast"` to the queue
1451
+ * addToast({ children: "Toast!" });
1452
+ *
1453
+ * // add an online toast notification. since these three use the same toast
1454
+ * // id, the hide timer will be reset each time
1455
+ * addToast({ toastId: "online" });
1456
+ * addToast({ toastId: "online" });
1457
+ * addToast({ toastId: "online" });
1458
+ *
1459
+ * // add a server error toast to the queue where the second one will be
1460
+ * // ignored
1461
+ * addToast({
1462
+ * toastId: "ServerError",
1463
+ * theme: "error",
1464
+ * duplicates: "prevent",
1465
+ * });
1466
+ * addToast({
1467
+ * toastId: "ServerError",
1468
+ * theme: "error",
1469
+ * duplicates: "prevent",
1470
+ * });
1471
+ *
1472
+ * // add a toast to the queue that has an action button that says "Goodbye"
1473
+ * addToast({
1474
+ * children: "Hello, world!",
1475
+ * action: "Goodbye",
1476
+ * });
1477
+ *
1478
+ * // add a toast to the queue that has an action button that says "Goodbye"
1479
+ * // and a custom click handler
1480
+ * addToast({
1481
+ * children: "Hello, world!",
1482
+ * action: {
1483
+ * onClick: () =&gt; {
1484
+ * logout();
1485
+ * },
1486
+ * children: "Goodbye",
1487
+ * },
1488
+ * });
1489
+ *
1490
+ * // add a toast to the queue that renders a react component in the content,
1491
+ * // a custom action button implementation (using `ToastActionButton`), and a
1492
+ * // close button
1493
+ * addToast({
1494
+ * children: &lt;SomeCustomComponent /&gt;,
1495
+ * actionButton: &lt;SomeCustomActionButton /&gt;,
1496
+ * closeButton: true,
1497
+ * });
1498
+ * ```
1499
+ */
1500
+ addToast = (toast: CreateToastOptions): void =&gt; {
1501
+ const {
1502
+ toastId = nanoid(),
1503
+ visibleTime = DEFAULT_TOAST_VISIBLE_TIME,
1504
+ role = visibleTime === null ? "alert" : "status",
1505
+ priority = "normal",
1506
+ duplicates = "restart",
1507
+ } = toast;
1508
+ &nbsp;
1509
+ const existingIndex = this.#getToastIndex(toast.toastId);
1510
+ if (existingIndex !== -1 &amp;&amp; duplicates !== "allow") {
1511
+ const existingToast = this.#queue[existingIndex];
1512
+ &nbsp;
1513
+ // reorder/move the existing toast to be the next item in the queue by:
1514
+ // - removing the toast from the queue
1515
+ // - inserting it into the next position with the updates
1516
+ if (priority === "next" &amp;&amp; existingIndex &gt; 1) {
1517
+ this.#queue.splice(existingIndex, 1);
1518
+ this.#queue.splice(1, 0, { ...existingToast, ...toast });
1519
+ this.#emit();
1520
+ return;
1521
+ }
1522
+ &nbsp;
1523
+ // only need to reorder the queue if it is not being shown
1524
+ if (
1525
+ (priority === "replace" || priority === "immediate") &amp;&amp;
1526
+ existingIndex !== 0
1527
+ ) {
1528
+ this.#queue.splice(existingIndex, 1);
1529
+ this.#addToastImmediately({
1530
+ ...existingToast,
1531
+ ...toast,
1532
+ });
1533
+ this.#emit();
1534
+ return;
1535
+ }
1536
+ &nbsp;
1537
+ const timers = this.#timers.get(toastId);
1538
+ if (existingToast.visible &amp;&amp; duplicates === "restart" &amp;&amp; timers) {
1539
+ this.#timers.set(toastId, { ...timers, elapsedTime: 0 });
1540
+ this.startRemoveTimeout(toastId);
1541
+ }
1542
+ &nbsp;
1543
+ this.#updateToast(existingIndex, toast);
1544
+ return;
1545
+ }
1546
+ &nbsp;
1547
+ const nextToast: QueuedToast = {
1548
+ ...toast,
1549
+ role,
1550
+ paused: false,
1551
+ visible: true,
1552
+ toastId,
1553
+ priority,
1554
+ duplicates,
1555
+ visibleTime,
1556
+ };
1557
+ &nbsp;
1558
+ const queueSize = this.#queue.length;
1559
+ if (priority === "next" &amp;&amp; queueSize &gt; 1) {
1560
+ this.#queue.splice(1, 0, nextToast);
1561
+ } else if (
1562
+ (priority === "replace" || priority === "immediate") &amp;&amp;
1563
+ queueSize &gt; 0
1564
+ ) {
1565
+ this.#addToastImmediately(nextToast);
1566
+ } else {
1567
+ this.#queue.push(nextToast);
1568
+ }
1569
+ &nbsp;
1570
+ this.#emit();
1571
+ };
1572
+ &nbsp;
1573
+ /**
1574
+ * Attempts to start the timeout for removing the toast when the `visibleTime`
1575
+ * is not null for a toast.
1576
+ *
1577
+ * @param toastId - The specific toastId to update
1578
+ */
1579
+ startRemoveTimeout = (toastId: string): void =&gt; {
1580
+ const toast = this.#getToast(toastId);
1581
+ if (!toast) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1582
+ <span class="cstat-no" title="statement not covered" > return;</span>
1583
+ <span class="cstat-no" title="statement not covered" > }</span>
1584
+ &nbsp;
1585
+ const { visibleTime } = toast;
1586
+ if (visibleTime === null) {
1587
+ // Must manually be closed
1588
+ return;
1589
+ }
1590
+ &nbsp;
1591
+ const cached = this.#timers.get(toastId);
1592
+ const timers = (cached &amp;&amp; { ...cached }) || {
1593
+ inactive: false,
1594
+ startTime: Date.now(),
1595
+ elapsedTime: 0,
1596
+ };
1597
+ window.clearTimeout(timers.exitTimeout);
1598
+ &nbsp;
1599
+ let duration = visibleTime;
1600
+ if (timers.elapsedTime) {
1601
+ duration -= timers.elapsedTime;
1602
+ }
1603
+ &nbsp;
1604
+ timers.inactive = false;
1605
+ timers.exitTimeout = window.setTimeout(() =&gt; {
1606
+ this.removeToast(toastId, true);
1607
+ }, duration);
1608
+ this.#timers.set(toastId, timers);
1609
+ };
1610
+ &nbsp;
1611
+ /**
1612
+ * Pauses the remove timeout for a specific toast normally with hover events
1613
+ * or the browser becoming inactive.
1614
+ *
1615
+ * @param toastId - The specific toastId to pause
1616
+ */
1617
+ pauseRemoveTimeout = (toastId: string): void =&gt; {
1618
+ const toast = this.#getToast(toastId);
1619
+ const cached = this.#timers.get(toastId);
1620
+ if (!toast || !cached || cached.inactive) {
1621
+ return;
1622
+ }
1623
+ &nbsp;
1624
+ window.clearTimeout(cached.exitTimeout);
1625
+ const timers = { ...cached };
1626
+ timers.inactive = true;
1627
+ timers.elapsedTime = Date.now() - timers.startTime + timers.elapsedTime;
1628
+ this.#timers.set(toastId, timers);
1629
+ this.#updateToast(toastId, { paused: true });
1630
+ };
1631
+ &nbsp;
1632
+ /**
1633
+ * Resumes the current remove timeout if it was paused by
1634
+ * {@link pauseRemoveTimeout}.
1635
+ *
1636
+ * @param toastId - The specific toastId to resume
1637
+ */
1638
+ resumeRemoveTimeout = (toastId: string): void =&gt; {
1639
+ const toastIndex = this.#getToastIndex(toastId);
1640
+ const timers = this.#timers.get(toastId);
1641
+ if (toastIndex === -1 || !timers?.startTime) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1642
+ <span class="cstat-no" title="statement not covered" > return;</span>
1643
+ <span class="cstat-no" title="statement not covered" > }</span>
1644
+ &nbsp;
1645
+ this.#updateToast(toastIndex, { paused: false });
1646
+ this.startRemoveTimeout(toastId);
1647
+ };
1648
+ &nbsp;
1649
+ /**
1650
+ * Removes a toast by id from the queue without any exit animation.
1651
+ *
1652
+ * @param toastId - The specific {@link QueuedToast.toastId}
1653
+ * @param transition - Set this to `true` to remove the toast by the exit
1654
+ * transition instead of immediately.
1655
+ */
1656
+ removeToast = (toastId: string, transition: boolean): void =&gt; {
1657
+ const toastIndex = this.#getToastIndex(toastId);
1658
+ if (toastIndex === -1) {
1659
+ return;
1660
+ }
1661
+ &nbsp;
1662
+ if (transition) {
1663
+ this.clearTimer(toastId);
1664
+ this.#updateToast(toastIndex, { visible: false });
1665
+ return;
1666
+ }
1667
+ &nbsp;
1668
+ this.#queue.splice(toastIndex, 1);
1669
+ this.#emit();
1670
+ };
1671
+ &nbsp;
1672
+ /**
1673
+ * Clears any pending timers for the provided toast id. This should generally
1674
+ * be used in the `useEffect` cleanup effect for any custom toast renderer
1675
+ * implementations.
1676
+ *
1677
+ * @example
1678
+ * ```tsx
1679
+ * const { toastId } = toast;
1680
+ * const toastManager = useToastManager();
1681
+ *
1682
+ * useEffect(() =&gt; {
1683
+ * return () =&gt; {
1684
+ * toastManager.clearTimer(toastId):
1685
+ * }
1686
+ * }, [toastManager, toastId]);
1687
+ * ```
1688
+ */
1689
+ clearTimer = (toastId: string): void =&gt; {
1690
+ const timer = this.#timers.get(toastId);
1691
+ window.clearTimeout(timer?.exitTimeout);
1692
+ this.#timers.delete(toastId);
1693
+ };
1694
+ &nbsp;
1695
+ /**
1696
+ * Removes first toast from the queue without any exit animation. You most
1697
+ * likely want to use {@link removeToast} instead.
1698
+ */
1699
+ popToast = (): void =&gt; {
1700
+ this.#queue.pop();
1701
+ this.#emit();
1702
+ };
1703
+ &nbsp;
1704
+ /**
1705
+ * Removes all toasts from the queue. There will be no exit animation.
1706
+ *
1707
+ * @param disableEmit - Set this to `true` to disable emitting the empty queue.
1708
+ * Mostly used for tests.
1709
+ */
1710
+ clearToasts = (disableEmit = false): void =&gt; {
1711
+ this.#queue = [];
1712
+ this.#timers.forEach((meta) =&gt; {
1713
+ window.clearTimeout(meta.exitTimeout);
1714
+ });
1715
+ this.#timers.clear();
1716
+ if (!disableEmit) {
1717
+ this.#emit();
1718
+ }
1719
+ };
1720
+ }
1721
+ &nbsp;
1722
+ /**
1723
+ * The default toast manager for react-md apps that will allow toasts to be
1724
+ * added without setting up the {@link ToastManagerProvider}.
1725
+ *
1726
+ * @internal
1727
+ * @remarks \@since 6.0.0
1728
+ */
1729
+ export const toastManager = new ToastManager();
1730
+ &nbsp;
1731
+ /**
1732
+ * @see {@link ToastManager.addToast}
1733
+ * @remarks \@since 6.0.0
1734
+ */
1735
+ export const addToast: ToastManager["addToast"] = (toast) =&gt;
1736
+ toastManager.addToast(toast);
1737
+ &nbsp;
1738
+ /**
1739
+ * @see {@link ToastManager.startRemoveTimeout}
1740
+ * @remarks \@since 6.0.0
1741
+ */
1742
+ export const startRemoveToastTimeout: ToastManager["startRemoveTimeout"] = <span class="fstat-no" title="function not covered" >(</span>
1743
+ <span class="cstat-no" title="statement not covered" > toastId</span>
1744
+ <span class="cstat-no" title="statement not covered" >) =&gt; toastManager.startRemoveTimeout(toastId);</span>
1745
+ &nbsp;
1746
+ /**
1747
+ * @see {@link ToastManager.popToast}
1748
+ * @remarks \@since 6.0.0
1749
+ */
1750
+ export const popToast: ToastManager["popToast"] = () =&gt; toastManager.popToast();
1751
+ &nbsp;
1752
+ /**
1753
+ * @see {@link ToastManager.removeToast}
1754
+ * @remarks \@since 6.0.0
1755
+ */
1756
+ export const removeToast: ToastManager["removeToast"] = (toastId, transition) =&gt;
1757
+ toastManager.removeToast(toastId, transition);
1758
+ &nbsp;
1759
+ /**
1760
+ * @see {@link ToastManager.clearToasts}
1761
+ * @remarks \@since 6.0.0
1762
+ */
1763
+ export const clearToasts = (): void =&gt; toastManager.clearToasts();
1764
+ &nbsp;</pre></td></tr></table></pre>
1765
+
1766
+ <div class='push'></div><!-- for sticky footer -->
1767
+ </div><!-- /wrapper -->
1768
+ <div class='footer quiet pad2 space-top1 center small'>
1769
+ Code coverage generated by
1770
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1771
+ at 2023-11-17T21:52:53.225Z
1772
+ </div>
1773
+ <script src="prettify.js"></script>
1774
+ <script>
1775
+ window.onload = function () {
1776
+ prettyPrint();
1777
+ };
1778
+ </script>
1779
+ <script src="sorter.js"></script>
1780
+ <script src="block-navigation.js"></script>
1781
+ </body>
1782
+ </html>
1783
+