imposium-js-sdk 3.5.8 → 3.5.9

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 (61) hide show
  1. package/coverage/base.css +224 -0
  2. package/coverage/block-navigation.js +87 -0
  3. package/coverage/cobertura-coverage.xml +1585 -0
  4. package/coverage/coverage-final.json +13 -0
  5. package/coverage/coverage-summary.json +14 -0
  6. package/coverage/favicon.png +0 -0
  7. package/coverage/index.html +176 -0
  8. package/coverage/junit.xml +377 -0
  9. package/coverage/lcov-report/base.css +224 -0
  10. package/coverage/lcov-report/block-navigation.js +87 -0
  11. package/coverage/lcov-report/favicon.png +0 -0
  12. package/coverage/lcov-report/index.html +176 -0
  13. package/coverage/lcov-report/prettify.css +1 -0
  14. package/coverage/lcov-report/prettify.js +2 -0
  15. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  16. package/coverage/lcov-report/sorter.js +210 -0
  17. package/coverage/lcov-report/src/Entry.ts.html +205 -0
  18. package/coverage/lcov-report/src/client/Client.ts.html +1519 -0
  19. package/coverage/lcov-report/src/client/DirectDeliveryPipe.ts.html +658 -0
  20. package/coverage/lcov-report/src/client/http/API.ts.html +526 -0
  21. package/coverage/lcov-report/src/client/http/index.html +116 -0
  22. package/coverage/lcov-report/src/client/index.html +131 -0
  23. package/coverage/lcov-report/src/index.html +116 -0
  24. package/coverage/lcov-report/src/scaffolding/ExceptionPipe.ts.html +448 -0
  25. package/coverage/lcov-report/src/scaffolding/Exceptions.ts.html +616 -0
  26. package/coverage/lcov-report/src/scaffolding/GoogleAnalytics.ts.html +424 -0
  27. package/coverage/lcov-report/src/scaffolding/Helpers.ts.html +412 -0
  28. package/coverage/lcov-report/src/scaffolding/Version.ts.html +118 -0
  29. package/coverage/lcov-report/src/scaffolding/index.html +176 -0
  30. package/coverage/lcov-report/src/video/FallbackPlayer.ts.html +133 -0
  31. package/coverage/lcov-report/src/video/Player.ts.html +1663 -0
  32. package/coverage/lcov-report/src/video/VideoPlayer.ts.html +679 -0
  33. package/coverage/lcov-report/src/video/index.html +146 -0
  34. package/coverage/lcov.info +1443 -0
  35. package/coverage/prettify.css +1 -0
  36. package/coverage/prettify.js +2 -0
  37. package/coverage/sort-arrow-sprite.png +0 -0
  38. package/coverage/sorter.js +210 -0
  39. package/coverage/src/Entry.ts.html +205 -0
  40. package/coverage/src/client/Client.ts.html +1519 -0
  41. package/coverage/src/client/DirectDeliveryPipe.ts.html +658 -0
  42. package/coverage/src/client/http/API.ts.html +526 -0
  43. package/coverage/src/client/http/index.html +116 -0
  44. package/coverage/src/client/index.html +131 -0
  45. package/coverage/src/index.html +116 -0
  46. package/coverage/src/scaffolding/ExceptionPipe.ts.html +448 -0
  47. package/coverage/src/scaffolding/Exceptions.ts.html +616 -0
  48. package/coverage/src/scaffolding/GoogleAnalytics.ts.html +424 -0
  49. package/coverage/src/scaffolding/Helpers.ts.html +412 -0
  50. package/coverage/src/scaffolding/Version.ts.html +118 -0
  51. package/coverage/src/scaffolding/index.html +176 -0
  52. package/coverage/src/video/FallbackPlayer.ts.html +133 -0
  53. package/coverage/src/video/Player.ts.html +1663 -0
  54. package/coverage/src/video/VideoPlayer.ts.html +679 -0
  55. package/coverage/src/video/index.html +146 -0
  56. package/lib/imposium.js +19 -4
  57. package/lib/imposium.js.map +1 -1
  58. package/lib/imposium.min.js +1 -1
  59. package/lib/imposium.min.js.LICENSE.txt +1 -1
  60. package/lib/imposium.min.js.map +1 -1
  61. package/package.json +1 -1
@@ -0,0 +1,1519 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/client/Client.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/client</a> Client.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">93.24% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>138/148</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">81.52% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>75/92</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">95.23% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>20/21</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">93.1% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>135/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 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></td><td class="line-coverage quiet"><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-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</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-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-neutral">&nbsp;</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-neutral">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-yes">1x</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-yes">1x</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-yes">1x</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-yes">41x</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-yes">41x</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-yes">41x</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-yes">41x</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-yes">41x</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-yes">41x</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-yes">41x</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-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-yes">41x</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-yes">41x</span>
660
+ <span class="cline-any cline-yes">41x</span>
661
+ <span class="cline-any cline-yes">41x</span>
662
+ <span class="cline-any cline-yes">41x</span>
663
+ <span class="cline-any cline-yes">41x</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-yes">41x</span>
666
+ <span class="cline-any cline-yes">41x</span>
667
+ <span class="cline-any cline-yes">1x</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-yes">40x</span>
671
+ <span class="cline-any cline-yes">1x</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-yes">39x</span>
675
+ <span class="cline-any cline-yes">1x</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-yes">38x</span>
679
+ <span class="cline-any cline-yes">38x</span>
680
+ <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-yes">38x</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-neutral">&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-yes">38x</span>
689
+ <span class="cline-any cline-yes">38x</span>
690
+ <span class="cline-any cline-yes">38x</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-yes">38x</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-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-yes">38x</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-yes">38x</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-yes">38x</span>
703
+ <span class="cline-any cline-no">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-no">&nbsp;</span>
706
+ <span class="cline-any cline-no">&nbsp;</span>
707
+ <span class="cline-any cline-no">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-no">&nbsp;</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-yes">3x</span>
716
+ <span class="cline-any cline-yes">3x</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-neutral">&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-yes">41x</span>
724
+ <span class="cline-any cline-yes">6x</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-yes">6x</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-yes">6x</span>
730
+ <span class="cline-any cline-yes">6x</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-yes">6x</span>
733
+ <span class="cline-any cline-yes">6x</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-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-yes">41x</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">28x</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-yes">28x</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-yes">28x</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-yes">28x</span>
754
+ <span class="cline-any cline-yes">28x</span>
755
+ <span class="cline-any cline-yes">1x</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-yes">27x</span>
759
+ <span class="cline-any cline-yes">1x</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-yes">26x</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-yes">41x</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-yes">4x</span>
777
+ <span class="cline-any cline-neutral">&nbsp;</span>
778
+ <span class="cline-any cline-yes">4x</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-yes">4x</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">4x</span>
784
+ <span class="cline-any cline-yes">4x</span>
785
+ <span class="cline-any cline-yes">3x</span>
786
+ <span class="cline-any cline-yes">2x</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
792
+ <span class="cline-any cline-yes">5x</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-yes">1x</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-yes">41x</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">2x</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-yes">2x</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-yes">2x</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-yes">2x</span>
815
+ <span class="cline-any cline-yes">2x</span>
816
+ <span class="cline-any cline-yes">1x</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-yes">1x</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-yes">1x</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-neutral">&nbsp;</span>
826
+ <span class="cline-any cline-neutral">&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-yes">41x</span>
831
+ <span class="cline-any cline-yes">7x</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-yes">7x</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-yes">7x</span>
839
+ <span class="cline-any cline-yes">7x</span>
840
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</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-yes">6x</span>
847
+ <span class="cline-any cline-yes">4x</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-yes">2x</span>
851
+ <span class="cline-any cline-yes">1x</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-yes">2x</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-yes">5x</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-yes">41x</span>
865
+ <span class="cline-any cline-yes">2x</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-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-yes">2x</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-yes">2x</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-yes">2x</span>
876
+ <span class="cline-any cline-no">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">2x</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-yes">41x</span>
890
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-yes">1x</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-yes">1x</span>
901
+ <span class="cline-any cline-no">&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-yes">1x</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-yes">41x</span>
915
+ <span class="cline-any cline-yes">5x</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-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-yes">5x</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-yes">5x</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-yes">5x</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</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">5x</span>
933
+ <span class="cline-any cline-yes">4x</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-yes">1x</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-yes">4x</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</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-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-yes">41x</span>
947
+ <span class="cline-any cline-yes">6x</span>
948
+ <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</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-yes">41x</span>
958
+ <span class="cline-any cline-yes">11x</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-neutral">&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-yes">41x</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-yes">2x</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-yes">2x</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-yes">2x</span>
972
+ <span class="cline-any cline-yes">1x</span>
973
+ <span class="cline-any cline-neutral">&nbsp;</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-yes">2x</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-neutral">&nbsp;</span>
981
+ <span class="cline-any cline-yes">41x</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-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">3x</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-yes">3x</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-yes">3x</span>
991
+ <span class="cline-any cline-yes">3x</span>
992
+ <span class="cline-any cline-yes">1x</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-yes">2x</span>
996
+ <span class="cline-any cline-yes">1x</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-neutral">&nbsp;</span>
999
+ <span class="cline-any cline-yes">2x</span>
1000
+ <span class="cline-any cline-yes">1x</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-yes">2x</span>
1004
+ <span class="cline-any cline-yes">2x</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-yes">1x</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>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-yes">41x</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-yes">1x</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-yes">1x</span>
1020
+ <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import API from './http/API';
1023
+ import VideoPlayer from '../video/VideoPlayer';
1024
+ import FallbackPlayer from '../video/FallbackPlayer';
1025
+ import GoogleAnalytics from '../scaffolding/GoogleAnalytics';
1026
+ import ExceptionPipe from '../scaffolding/ExceptionPipe';
1027
+ import DirectDeliveryPipe, { DelegateMap } from './DirectDeliveryPipe';
1028
+ &nbsp;
1029
+ import {
1030
+ ClientConfigurationError,
1031
+ PlayerConfigurationError,
1032
+ ModerationError
1033
+ } from '../scaffolding/Exceptions';
1034
+ &nbsp;
1035
+ import { prepConfig, keyExists, cloneWithKeys, isFunc } from '../scaffolding/Helpers';
1036
+ &nbsp;
1037
+ export type ExperienceCreated = (e: IExperience) =&gt; any;
1038
+ export type GotExperience = (e: IExperience) =&gt; any;
1039
+ export type onError = (e: Error) =&gt; any;
1040
+ export type UploadProgress = (n: number) =&gt; any;
1041
+ &nbsp;
1042
+ export interface IClientEvents {
1043
+ EXPERIENCE_CREATED?: ExperienceCreated &amp; string;
1044
+ GOT_EXPERIENCE?: GotExperience &amp; string;
1045
+ ERROR?: onError &amp; string;
1046
+ UPLOAD_PROGRESS?: UploadProgress &amp; string;
1047
+ }
1048
+ &nbsp;
1049
+ export interface IClientConfig {
1050
+ accessToken: string;
1051
+ storyId: string;
1052
+ compositionId: string;
1053
+ environment: string;
1054
+ gaPlacement: string;
1055
+ deliveryMode: string;
1056
+ pollRate: number;
1057
+ }
1058
+ &nbsp;
1059
+ export interface IRenderHistory {
1060
+ prevExperienceId: string;
1061
+ prevMessage: string;
1062
+ }
1063
+ &nbsp;
1064
+ export interface IExperience {
1065
+ id: string;
1066
+ rendering: boolean;
1067
+ date_created: number;
1068
+ moderation_status: string;
1069
+ error?: string;
1070
+ input: any;
1071
+ output: IExperienceOutput;
1072
+ }
1073
+ &nbsp;
1074
+ export interface IExperienceOutput {
1075
+ videos: IOutputVideos;
1076
+ images?: IOutputImages;
1077
+ }
1078
+ &nbsp;
1079
+ export interface IOutputImages {
1080
+ poster: string;
1081
+ }
1082
+ &nbsp;
1083
+ export interface IOutputVideos {
1084
+ m3u8?: IPlaylistOutput;
1085
+ mp4_480?: IVideoOutput;
1086
+ mp4_720?: IVideoOutput;
1087
+ mp4_1090?: IVideoOutput;
1088
+ }
1089
+ &nbsp;
1090
+ export interface IPlaylistOutput {
1091
+ format: string;
1092
+ duration: number;
1093
+ rate: number;
1094
+ url: string;
1095
+ }
1096
+ &nbsp;
1097
+ export interface IVideoOutput {
1098
+ url: string;
1099
+ format: string;
1100
+ rate: number;
1101
+ width: number;
1102
+ height: number;
1103
+ duration: number;
1104
+ }
1105
+ &nbsp;
1106
+ const { ...settings } = require('../conf/settings.json').client;
1107
+ &nbsp;
1108
+ const STRINGIFIED_UNDEFINED = 'undefined';
1109
+ &nbsp;
1110
+ export default class Client {
1111
+ public static eventNames: IClientEvents = settings.eventNames;
1112
+ &nbsp;
1113
+ public clientConfig: IClientConfig = undefined;
1114
+ &nbsp;
1115
+ public gaProperty: string = '';
1116
+ &nbsp;
1117
+ private directDeliveryPipe: DirectDeliveryPipe = undefined;
1118
+ &nbsp;
1119
+ private player: VideoPlayer = undefined;
1120
+ &nbsp;
1121
+ private renderHistory: IRenderHistory = settings.emptyHistory;
1122
+ &nbsp;
1123
+ private eventDelegateRefs: IClientEvents = cloneWithKeys(Client.eventNames);
1124
+ &nbsp;
1125
+ private playerIsFallback: boolean = false;
1126
+ &nbsp;
1127
+ /*
1128
+ Initialize Imposium client
1129
+ */
1130
+ constructor(config: IClientConfig) {
1131
+ this.setup(config);
1132
+ }
1133
+ &nbsp;
1134
+ /*
1135
+ Exposed for users who may want to re-use a client for n stories
1136
+ */
1137
+ public setup = (config: IClientConfig): void =&gt; {
1138
+ const { defaultConfig } = settings;
1139
+ const prevConfig = this.clientConfig || settings.defaultConfig;
1140
+ const clientDelegates: DelegateMap = new Map();
1141
+ let api: API = null;
1142
+ &nbsp;
1143
+ try {
1144
+ if (typeof config !== 'object') {
1145
+ throw new ClientConfigurationError('badConfig', null);
1146
+ }
1147
+ &nbsp;
1148
+ if (!config.hasOwnProperty('storyId') || typeof config.storyId !== 'string') {
1149
+ throw new ClientConfigurationError('storyId', null);
1150
+ }
1151
+ &nbsp;
1152
+ if (!config.hasOwnProperty('accessToken') || typeof config.accessToken !== 'string') {
1153
+ throw new ClientConfigurationError('accessToken', null);
1154
+ }
1155
+ &nbsp;
1156
+ prepConfig(config, defaultConfig);
1157
+ this.clientConfig = { ...prevConfig, ...config };
1158
+ &nbsp;
1159
+ api = new API(
1160
+ this.clientConfig.accessToken,
1161
+ this.clientConfig.environment,
1162
+ this.clientConfig.storyId,
1163
+ this.clientConfig.compositionId
1164
+ );
1165
+ &nbsp;
1166
+ clientDelegates.set('experienceCreated', (e: IExperience) =&gt; this.experienceCreated(e));
1167
+ clientDelegates.set('gotExperience', (e: IExperience) =&gt; this.gotExperience(e));
1168
+ clientDelegates.set('internalError', (e: any) =&gt; this.internalError(e));
1169
+ &nbsp;
1170
+ this.directDeliveryPipe = new DirectDeliveryPipe({
1171
+ api,
1172
+ clientDelegates,
1173
+ environment: this.clientConfig.environment
1174
+ });
1175
+ &nbsp;
1176
+ api.getGAProperty()
1177
+ .then((story: any) =&gt; {
1178
+ const { gaTrackingId: property } = story;
1179
+ &nbsp;
1180
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof property === 'string' &amp;&amp; property.length &gt; 0) {
1181
+ <span class="cstat-no" title="statement not covered" > GoogleAnalytics.initialize(this.clientConfig.gaPlacement);</span>
1182
+ &nbsp;
1183
+ <span class="cstat-no" title="statement not covered" > this.gaProperty = property;</span>
1184
+ <span class="cstat-no" title="statement not covered" > if (typeof this.player !== 'undefined') {</span>
1185
+ <span class="cstat-no" title="statement not covered" > this.player.setGaProperty(property);</span>
1186
+ }
1187
+ }
1188
+ })
1189
+ .<span class="fstat-no" title="function not covered" >catch((e</span>) =&gt; {
1190
+ <span class="cstat-no" title="statement not covered" > console.warn(`[IMPOSIUM] Failed to fetch GA property: ${e?.message}`);</span>
1191
+ });
1192
+ } catch (e) {
1193
+ const storyId: string = config &amp;&amp; config.storyId ? config.storyId : '';
1194
+ ExceptionPipe.trapError(e, storyId);
1195
+ }
1196
+ };
1197
+ &nbsp;
1198
+ /*
1199
+ Bind player to client
1200
+ */
1201
+ public bindPlayer = (player: VideoPlayer, isFallback: boolean = false): void =&gt; {
1202
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1203
+ const {
1204
+ clientConfig: { storyId }
1205
+ } = this;
1206
+ &nbsp;
1207
+ this.playerIsFallback = isFallback;
1208
+ this.player = player;
1209
+ &nbsp;
1210
+ player.setStoryId(storyId);
1211
+ if (this.gaProperty) {
1212
+ player.setGaProperty(this.gaProperty);
1213
+ }
1214
+ }
1215
+ };
1216
+ &nbsp;
1217
+ /*
1218
+ Sets a callback for an event
1219
+ */
1220
+ public on = (eventName: string, callback: any): void =&gt; {
1221
+ const {
1222
+ eventDelegateRefs,
1223
+ eventDelegateRefs: { ERROR }
1224
+ } = this;
1225
+ &nbsp;
1226
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1227
+ const {
1228
+ clientConfig: { storyId }
1229
+ } = this;
1230
+ &nbsp;
1231
+ try {
1232
+ if (!isFunc(callback)) {
1233
+ throw new ClientConfigurationError('invalidCallbackType', eventName);
1234
+ }
1235
+ &nbsp;
1236
+ if (!keyExists(Client.eventNames, eventName)) {
1237
+ throw new ClientConfigurationError('invalidEventName', eventName);
1238
+ }
1239
+ &nbsp;
1240
+ eventDelegateRefs[eventName] = callback;
1241
+ } catch (e) {
1242
+ ExceptionPipe.trapError(e, storyId, ERROR);
1243
+ }
1244
+ }
1245
+ };
1246
+ &nbsp;
1247
+ /*
1248
+ Turns off a specific event or all events
1249
+ */
1250
+ public off = (eventName: string = ''): void =&gt; {
1251
+ const {
1252
+ eventDelegateRefs,
1253
+ eventDelegateRefs: { ERROR }
1254
+ } = this;
1255
+ &nbsp;
1256
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1257
+ const {
1258
+ clientConfig: { storyId }
1259
+ } = this;
1260
+ &nbsp;
1261
+ try {
1262
+ if (eventName) {
1263
+ if (keyExists(Client.eventNames, eventName)) {
1264
+ eventDelegateRefs[eventName] = null;
1265
+ } else {
1266
+ throw new ClientConfigurationError('invalidEventName', eventName);
1267
+ }
1268
+ } else {
1269
+ Object.keys(Client.eventNames).forEach((event) =&gt; {
1270
+ eventDelegateRefs[event] = null;
1271
+ });
1272
+ }
1273
+ } catch (e) {
1274
+ ExceptionPipe.trapError(e, storyId, ERROR);
1275
+ }
1276
+ }
1277
+ };
1278
+ &nbsp;
1279
+ /*
1280
+ Sets up analytics using fallback video player wrapper class
1281
+ */
1282
+ public captureAnalytics = (playerRef: HTMLVideoElement = null): void =&gt; {
1283
+ const {
1284
+ eventDelegateRefs: { ERROR }
1285
+ } = this;
1286
+ &nbsp;
1287
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1288
+ const {
1289
+ clientConfig: { storyId }
1290
+ } = this;
1291
+ &nbsp;
1292
+ try {
1293
+ if (playerRef instanceof HTMLVideoElement) {
1294
+ this.bindPlayer(new FallbackPlayer(playerRef), true);
1295
+ } else {
1296
+ // Prop passed wasn't of type HTMLVideoElement
1297
+ throw new PlayerConfigurationError('invalidPlayerRef', null);
1298
+ }
1299
+ } catch (e) {
1300
+ ExceptionPipe.trapError(e, storyId, ERROR);
1301
+ }
1302
+ }
1303
+ };
1304
+ &nbsp;
1305
+ /*
1306
+ Call exposed to users that fetches experience data
1307
+ */
1308
+ public getExperience = (experienceId: string): void =&gt; {
1309
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1310
+ const {
1311
+ player,
1312
+ clientConfig: { storyId },
1313
+ eventDelegateRefs: { GOT_EXPERIENCE, ERROR }
1314
+ } = this;
1315
+ &nbsp;
1316
+ try {
1317
+ if (player === null &amp;&amp; !isFunc(GOT_EXPERIENCE)) {
1318
+ throw new ClientConfigurationError(
1319
+ 'badConfigOnGet',
1320
+ Client.eventNames.GOT_EXPERIENCE
1321
+ );
1322
+ }
1323
+ &nbsp;
1324
+ if (!this.isValidExperienceId(experienceId)) {
1325
+ throw new ClientConfigurationError('invalidExperienceId', null);
1326
+ }
1327
+ &nbsp;
1328
+ if (experienceId.length &gt; settings.uuidLength) {
1329
+ experienceId = experienceId.substring(0, settings.uuidLength);
1330
+ }
1331
+ &nbsp;
1332
+ this.directDeliveryPipe.getExperience(experienceId);
1333
+ } catch (e) {
1334
+ ExceptionPipe.trapError(e, storyId, ERROR);
1335
+ }
1336
+ }
1337
+ };
1338
+ &nbsp;
1339
+ /*
1340
+ Creates experiences and handles various render flows
1341
+ */
1342
+ public createExperience = (inventory: any, render: boolean = true): void =&gt; {
1343
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1344
+ const {
1345
+ player,
1346
+ playerIsFallback,
1347
+ clientConfig: { storyId },
1348
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1349
+ } = this;
1350
+ &nbsp;
1351
+ try {
1352
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1353
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1354
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1355
+ 'bagConfigOnPostRender',
1356
+ Client.eventNames.GOT_EXPERIENCE
1357
+ );
1358
+ }
1359
+ &nbsp;
1360
+ this.directDeliveryPipe.createExperience(inventory, render, UPLOAD_PROGRESS);
1361
+ } catch (e) {
1362
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(e, storyId, ERROR);</span>
1363
+ }
1364
+ }
1365
+ };
1366
+ &nbsp;
1367
+ public renderExperience = (inventory: any): void =&gt; {
1368
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1369
+ const {
1370
+ player,
1371
+ playerIsFallback,
1372
+ clientConfig: { storyId },
1373
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1374
+ } = this;
1375
+ &nbsp;
1376
+ try {
1377
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1378
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1379
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1380
+ 'bagConfigOnPostRender',
1381
+ Client.eventNames.GOT_EXPERIENCE
1382
+ );
1383
+ }
1384
+ &nbsp;
1385
+ this.directDeliveryPipe.fetchExperience(inventory, UPLOAD_PROGRESS);
1386
+ } catch (e) {
1387
+ <span class="cstat-no" title="statement not covered" > ExceptionPipe.trapError(e, storyId, ERROR);</span>
1388
+ }
1389
+ }
1390
+ };
1391
+ &nbsp;
1392
+ public renderExperienceFromId = (experienceId): void =&gt; {
1393
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (this.clientConfig) {
1394
+ const {
1395
+ player,
1396
+ playerIsFallback,
1397
+ clientConfig: { storyId },
1398
+ eventDelegateRefs: { GOT_EXPERIENCE, UPLOAD_PROGRESS, ERROR }
1399
+ } = this;
1400
+ &nbsp;
1401
+ try {
1402
+ // Ensures config error throws if not using our player / GOT_EXPERIENCE isn't set or set correctly
1403
+ <span class="missing-if-branch" title="if path not taken" >I</span>if ((player === null || playerIsFallback) &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!isFunc(GOT_EXPERIENCE)) {</span>
1404
+ <span class="cstat-no" title="statement not covered" > throw new ClientConfigurationError(</span>
1405
+ 'bagConfigOnPostRender',
1406
+ Client.eventNames.GOT_EXPERIENCE
1407
+ );
1408
+ }
1409
+ &nbsp;
1410
+ if (!this.isValidExperienceId(experienceId)) {
1411
+ throw new ClientConfigurationError('invalidExperienceId', null);
1412
+ }
1413
+ &nbsp;
1414
+ this.directDeliveryPipe.fetchExperience(null, UPLOAD_PROGRESS, 1, experienceId);
1415
+ } catch (e) {
1416
+ ExceptionPipe.trapError(e, storyId, ERROR);
1417
+ }
1418
+ }
1419
+ };
1420
+ &nbsp;
1421
+ /*
1422
+ Update render history state, prevents storing duplicates
1423
+ */
1424
+ private updateHistory = (key: string, value: string): void =&gt; {
1425
+ if (this.renderHistory[key] !== value) {
1426
+ this.renderHistory[key] = value;
1427
+ }
1428
+ };
1429
+ &nbsp;
1430
+ /*
1431
+ Validates that an experienceId is a usable, non-empty string, and rejects
1432
+ the literal string 'undefined' which can slip through when values are
1433
+ interpolated from unset template variables
1434
+ */
1435
+ private isValidExperienceId = (id: unknown): boolean =&gt; {
1436
+ return typeof id === 'string' &amp;&amp; !!id &amp;&amp; id !== STRINGIFIED_UNDEFINED;
1437
+ };
1438
+ &nbsp;
1439
+ /*
1440
+ Handler for emitting expereince data on first creation
1441
+ */
1442
+ private experienceCreated = (experience: IExperience): void =&gt; {
1443
+ const {
1444
+ eventDelegateRefs: { EXPERIENCE_CREATED }
1445
+ } = this;
1446
+ &nbsp;
1447
+ const { id } = experience;
1448
+ &nbsp;
1449
+ if (isFunc(EXPERIENCE_CREATED)) {
1450
+ EXPERIENCE_CREATED(experience);
1451
+ }
1452
+ &nbsp;
1453
+ this.updateHistory('prevExperienceId', id);
1454
+ };
1455
+ &nbsp;
1456
+ /*
1457
+ Handler for validating and deferring / emitting experience data after rendering is complete
1458
+ */
1459
+ private gotExperience = (experience: IExperience): void =&gt; {
1460
+ const {
1461
+ player,
1462
+ clientConfig: { storyId },
1463
+ eventDelegateRefs: { GOT_EXPERIENCE, ERROR }
1464
+ } = this;
1465
+ &nbsp;
1466
+ const { id, moderation_status } = experience;
1467
+ &nbsp;
1468
+ try {
1469
+ if (moderation_status === 'rejected') {
1470
+ throw new ModerationError('rejection', id);
1471
+ }
1472
+ &nbsp;
1473
+ if (isFunc(GOT_EXPERIENCE)) {
1474
+ GOT_EXPERIENCE(experience);
1475
+ }
1476
+ &nbsp;
1477
+ if (typeof player !== 'undefined') {
1478
+ player.experienceGenerated(experience);
1479
+ }
1480
+ &nbsp;
1481
+ this.updateHistory('prevExperienceId', id);
1482
+ this.updateHistory('prevMessage', '');
1483
+ } catch (e) {
1484
+ ExceptionPipe.trapError(e, storyId, ERROR);
1485
+ }
1486
+ };
1487
+ &nbsp;
1488
+ /*
1489
+ Handler for handling async internal errors
1490
+ */
1491
+ private internalError = (e: any): void =&gt; {
1492
+ const {
1493
+ clientConfig: { storyId },
1494
+ eventDelegateRefs: { ERROR }
1495
+ } = this;
1496
+ &nbsp;
1497
+ ExceptionPipe.trapError(e, storyId, ERROR);
1498
+ };
1499
+ }
1500
+ &nbsp;</pre></td></tr></table></pre>
1501
+
1502
+ <div class='push'></div><!-- for sticky footer -->
1503
+ </div><!-- /wrapper -->
1504
+ <div class='footer quiet pad2 space-top1 center small'>
1505
+ Code coverage generated by
1506
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1507
+ at 2026-09-11T18:54:40.363Z
1508
+ </div>
1509
+ <script src="../../prettify.js"></script>
1510
+ <script>
1511
+ window.onload = function () {
1512
+ prettyPrint();
1513
+ };
1514
+ </script>
1515
+ <script src="../../sorter.js"></script>
1516
+ <script src="../../block-navigation.js"></script>
1517
+ </body>
1518
+ </html>
1519
+