@sentry/warden 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +246 -0
- package/README.md +2 -1
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +446 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/src/action/checks/index.html +116 -0
- package/coverage/lcov-report/src/action/checks/manager.ts.html +499 -0
- package/coverage/lcov-report/src/action/error-reporting.ts.html +181 -0
- package/coverage/lcov-report/src/action/fix-evaluation/github.ts.html +508 -0
- package/coverage/lcov-report/src/action/fix-evaluation/index.html +161 -0
- package/coverage/lcov-report/src/action/fix-evaluation/index.ts.html +1243 -0
- package/coverage/lcov-report/src/action/fix-evaluation/judge.ts.html +817 -0
- package/coverage/lcov-report/src/action/fix-evaluation/types.ts.html +274 -0
- package/coverage/lcov-report/src/action/index.html +161 -0
- package/coverage/lcov-report/src/action/inputs.ts.html +529 -0
- package/coverage/lcov-report/src/action/pi-ncc-compat.ts.html +292 -0
- package/coverage/lcov-report/src/action/review/coordination.ts.html +208 -0
- package/coverage/lcov-report/src/action/review/index.html +131 -0
- package/coverage/lcov-report/src/action/review/poster.ts.html +1051 -0
- package/coverage/lcov-report/src/action/review-state.ts.html +280 -0
- package/coverage/lcov-report/src/action/triggers/executor.ts.html +856 -0
- package/coverage/lcov-report/src/action/triggers/index.html +116 -0
- package/coverage/lcov-report/src/action/workflow/base.ts.html +1135 -0
- package/coverage/lcov-report/src/action/workflow/index.html +146 -0
- package/coverage/lcov-report/src/action/workflow/pr-workflow.ts.html +2713 -0
- package/coverage/lcov-report/src/action/workflow/schedule.ts.html +1027 -0
- package/coverage/lcov-report/src/cli/args.ts.html +1657 -0
- package/coverage/lcov-report/src/cli/commands/add.ts.html +1567 -0
- package/coverage/lcov-report/src/cli/commands/build.ts.html +1618 -0
- package/coverage/lcov-report/src/cli/commands/index.html +191 -0
- package/coverage/lcov-report/src/cli/commands/init.ts.html +1357 -0
- package/coverage/lcov-report/src/cli/commands/runs.ts.html +2560 -0
- package/coverage/lcov-report/src/cli/commands/setup-app/browser.ts.html +214 -0
- package/coverage/lcov-report/src/cli/commands/setup-app/credentials.ts.html +220 -0
- package/coverage/lcov-report/src/cli/commands/setup-app/index.html +161 -0
- package/coverage/lcov-report/src/cli/commands/setup-app/manifest.ts.html +235 -0
- package/coverage/lcov-report/src/cli/commands/setup-app/server.ts.html +601 -0
- package/coverage/lcov-report/src/cli/commands/setup-app.ts.html +571 -0
- package/coverage/lcov-report/src/cli/commands/sync.ts.html +475 -0
- package/coverage/lcov-report/src/cli/context.ts.html +532 -0
- package/coverage/lcov-report/src/cli/diff-apply.ts.html +334 -0
- package/coverage/lcov-report/src/cli/files.ts.html +904 -0
- package/coverage/lcov-report/src/cli/fix.ts.html +1060 -0
- package/coverage/lcov-report/src/cli/git.ts.html +1201 -0
- package/coverage/lcov-report/src/cli/help.ts.html +1696 -0
- package/coverage/lcov-report/src/cli/index.html +281 -0
- package/coverage/lcov-report/src/cli/input.ts.html +397 -0
- package/coverage/lcov-report/src/cli/log-cleanup.ts.html +337 -0
- package/coverage/lcov-report/src/cli/main.ts.html +5107 -0
- package/coverage/lcov-report/src/cli/output/box.ts.html +790 -0
- package/coverage/lcov-report/src/cli/output/formatters.ts.html +1099 -0
- package/coverage/lcov-report/src/cli/output/icons.ts.html +142 -0
- package/coverage/lcov-report/src/cli/output/index.html +281 -0
- package/coverage/lcov-report/src/cli/output/index.ts.html +295 -0
- package/coverage/lcov-report/src/cli/output/ink-runner.tsx.html +1597 -0
- package/coverage/lcov-report/src/cli/output/jsonl-schema-gen.ts.html +355 -0
- package/coverage/lcov-report/src/cli/output/jsonl.ts.html +2137 -0
- package/coverage/lcov-report/src/cli/output/live-status.tsx.html +916 -0
- package/coverage/lcov-report/src/cli/output/reporter.ts.html +1630 -0
- package/coverage/lcov-report/src/cli/output/tasks.ts.html +3193 -0
- package/coverage/lcov-report/src/cli/output/tty.ts.html +310 -0
- package/coverage/lcov-report/src/cli/output/verbosity.ts.html +181 -0
- package/coverage/lcov-report/src/cli/signals.ts.html +199 -0
- package/coverage/lcov-report/src/cli/terminal.ts.html +1060 -0
- package/coverage/lcov-report/src/config/index.html +161 -0
- package/coverage/lcov-report/src/config/index.ts.html +94 -0
- package/coverage/lcov-report/src/config/loader.ts.html +1753 -0
- package/coverage/lcov-report/src/config/schema.ts.html +910 -0
- package/coverage/lcov-report/src/config/writer.ts.html +538 -0
- package/coverage/lcov-report/src/diff/apply.ts.html +241 -0
- package/coverage/lcov-report/src/diff/classify.ts.html +361 -0
- package/coverage/lcov-report/src/diff/coalesce.ts.html +1123 -0
- package/coverage/lcov-report/src/diff/context.ts.html +952 -0
- package/coverage/lcov-report/src/diff/index.html +191 -0
- package/coverage/lcov-report/src/diff/index.ts.html +100 -0
- package/coverage/lcov-report/src/diff/parser.ts.html +532 -0
- package/coverage/lcov-report/src/evals/harness.ts.html +700 -0
- package/coverage/lcov-report/src/evals/index.html +221 -0
- package/coverage/lcov-report/src/evals/index.ts.html +955 -0
- package/coverage/lcov-report/src/evals/names.ts.html +121 -0
- package/coverage/lcov-report/src/evals/runner.ts.html +664 -0
- package/coverage/lcov-report/src/evals/scaffold.ts.html +970 -0
- package/coverage/lcov-report/src/evals/types.ts.html +661 -0
- package/coverage/lcov-report/src/evals/usage.ts.html +178 -0
- package/coverage/lcov-report/src/evals/verify.ts.html +1054 -0
- package/coverage/lcov-report/src/event/context.ts.html +490 -0
- package/coverage/lcov-report/src/event/index.html +116 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/output/dedup.ts.html +2950 -0
- package/coverage/lcov-report/src/output/github-checks.ts.html +1579 -0
- package/coverage/lcov-report/src/output/index.html +161 -0
- package/coverage/lcov-report/src/output/renderer.ts.html +988 -0
- package/coverage/lcov-report/src/output/stale.ts.html +640 -0
- package/coverage/lcov-report/src/sdk/analyze.ts.html +3010 -0
- package/coverage/lcov-report/src/sdk/auth.ts.html +217 -0
- package/coverage/lcov-report/src/sdk/circuit-breaker.ts.html +304 -0
- package/coverage/lcov-report/src/sdk/errors.ts.html +658 -0
- package/coverage/lcov-report/src/sdk/extract.ts.html +1810 -0
- package/coverage/lcov-report/src/sdk/fix-quality.ts.html +841 -0
- package/coverage/lcov-report/src/sdk/haiku.ts.html +1456 -0
- package/coverage/lcov-report/src/sdk/index.html +416 -0
- package/coverage/lcov-report/src/sdk/json-output.ts.html +508 -0
- package/coverage/lcov-report/src/sdk/model-pricing.json.html +499 -0
- package/coverage/lcov-report/src/sdk/otel.ts.html +433 -0
- package/coverage/lcov-report/src/sdk/post-process.ts.html +412 -0
- package/coverage/lcov-report/src/sdk/prepare.ts.html +400 -0
- package/coverage/lcov-report/src/sdk/pricing.ts.html +778 -0
- package/coverage/lcov-report/src/sdk/prompt-sections.ts.html +595 -0
- package/coverage/lcov-report/src/sdk/prompt.ts.html +451 -0
- package/coverage/lcov-report/src/sdk/report-files.ts.html +166 -0
- package/coverage/lcov-report/src/sdk/retry.ts.html +202 -0
- package/coverage/lcov-report/src/sdk/runner.ts.html +400 -0
- package/coverage/lcov-report/src/sdk/runtimes/claude.ts.html +1693 -0
- package/coverage/lcov-report/src/sdk/runtimes/index.html +176 -0
- package/coverage/lcov-report/src/sdk/runtimes/index.ts.html +244 -0
- package/coverage/lcov-report/src/sdk/runtimes/model-selectors.ts.html +328 -0
- package/coverage/lcov-report/src/sdk/runtimes/pi.ts.html +2104 -0
- package/coverage/lcov-report/src/sdk/runtimes/types.ts.html +508 -0
- package/coverage/lcov-report/src/sdk/types.ts.html +730 -0
- package/coverage/lcov-report/src/sdk/usage.ts.html +502 -0
- package/coverage/lcov-report/src/sdk/verify.ts.html +1027 -0
- package/coverage/lcov-report/src/sentry.ts.html +994 -0
- package/coverage/lcov-report/src/skill-builder/agentic.ts.html +1063 -0
- package/coverage/lcov-report/src/skill-builder/authoring-provider.ts.html +334 -0
- package/coverage/lcov-report/src/skill-builder/definition.ts.html +748 -0
- package/coverage/lcov-report/src/skill-builder/index.html +236 -0
- package/coverage/lcov-report/src/skill-builder/outline-contract.ts.html +400 -0
- package/coverage/lcov-report/src/skill-builder/outline-state.ts.html +382 -0
- package/coverage/lcov-report/src/skill-builder/outline.ts.html +1402 -0
- package/coverage/lcov-report/src/skill-builder/skill-contract.ts.html +382 -0
- package/coverage/lcov-report/src/skill-builder/skill-prompts.ts.html +1180 -0
- package/coverage/lcov-report/src/skill-builder/skill.ts.html +2398 -0
- package/coverage/lcov-report/src/skills/index.html +131 -0
- package/coverage/lcov-report/src/skills/loader.ts.html +1693 -0
- package/coverage/lcov-report/src/skills/remote.ts.html +1909 -0
- package/coverage/lcov-report/src/triggers/index.html +116 -0
- package/coverage/lcov-report/src/triggers/matcher.ts.html +841 -0
- package/coverage/lcov-report/src/types/index.html +116 -0
- package/coverage/lcov-report/src/types/index.ts.html +1240 -0
- package/coverage/lcov-report/src/utils/async.ts.html +331 -0
- package/coverage/lcov-report/src/utils/exec.ts.html +496 -0
- package/coverage/lcov-report/src/utils/index.html +176 -0
- package/coverage/lcov-report/src/utils/index.ts.html +313 -0
- package/coverage/lcov-report/src/utils/path.ts.html +202 -0
- package/coverage/lcov-report/src/utils/version.ts.html +136 -0
- package/coverage/lcov.info +19134 -0
- package/dist/cli/commands/runs.d.ts +1 -1
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +1 -1
- package/dist/cli/commands/runs.js.map +1 -1
- package/dist/cli/files.d.ts.map +1 -1
- package/dist/cli/files.js +10 -11
- package/dist/cli/files.js.map +1 -1
- package/dist/sdk/verify.d.ts.map +1 -1
- package/dist/sdk/verify.js +3 -2
- package/dist/sdk/verify.js.map +1 -1
- package/dist/skill-builder/outline.d.ts.map +1 -1
- package/dist/skill-builder/outline.js.map +1 -1
- package/package.json +8 -3
- package/test-results.junit.xml +4329 -0
- package/dist/evals/index.d.ts +0 -22
- package/dist/evals/index.d.ts.map +0 -1
- package/dist/evals/index.js +0 -92
- package/dist/evals/index.js.map +0 -1
- package/dist/evals/judge.d.ts +0 -12
- package/dist/evals/judge.d.ts.map +0 -1
- package/dist/evals/judge.js +0 -171
- package/dist/evals/judge.js.map +0 -1
- package/dist/evals/runner.d.ts +0 -18
- package/dist/evals/runner.d.ts.map +0 -1
- package/dist/evals/runner.js +0 -149
- package/dist/evals/runner.js.map +0 -1
- package/dist/evals/setup.d.ts +0 -2
- package/dist/evals/setup.d.ts.map +0 -1
- package/dist/evals/setup.js +0 -22
- package/dist/evals/setup.js.map +0 -1
- package/dist/evals/types.d.ts +0 -160
- package/dist/evals/types.d.ts.map +0 -1
- package/dist/evals/types.js +0 -148
- package/dist/evals/types.js.map +0 -1
|
@@ -0,0 +1,841 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/triggers/matcher.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/triggers</a> matcher.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">95.19% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>99/104</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">87.67% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>64/73</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>24/24</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">96.73% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>89/92</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-yes">23x</span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-yes">23x</span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-yes">7x</span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
336
|
+
<span class="cline-any cline-yes">9x</span>
|
|
337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
|
+
<span class="cline-any cline-yes">2912x</span>
|
|
344
|
+
<span class="cline-any cline-yes">2912x</span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-yes">790x</span>
|
|
347
|
+
<span class="cline-any cline-yes">790x</span>
|
|
348
|
+
<span class="cline-any cline-yes">790x</span>
|
|
349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
354
|
+
<span class="cline-any cline-yes">31087x</span>
|
|
355
|
+
<span class="cline-any cline-yes">31087x</span>
|
|
356
|
+
<span class="cline-any cline-yes">31087x</span>
|
|
357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
358
|
+
<span class="cline-any cline-yes">31087x</span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
362
|
+
<span class="cline-any cline-yes">31087x</span>
|
|
363
|
+
<span class="cline-any cline-yes">110x</span>
|
|
364
|
+
<span class="cline-any cline-yes">110x</span>
|
|
365
|
+
<span class="cline-any cline-yes">110x</span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
368
|
+
<span class="cline-any cline-yes">30977x</span>
|
|
369
|
+
<span class="cline-any cline-yes">34x</span>
|
|
370
|
+
<span class="cline-any cline-yes">34x</span>
|
|
371
|
+
<span class="cline-any cline-yes">34x</span>
|
|
372
|
+
<span class="cline-any cline-neutral"> </span>
|
|
373
|
+
<span class="cline-any cline-neutral"> </span>
|
|
374
|
+
<span class="cline-any cline-yes">30943x</span>
|
|
375
|
+
<span class="cline-any cline-yes">2049x</span>
|
|
376
|
+
<span class="cline-any cline-yes">2049x</span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-yes">28894x</span>
|
|
380
|
+
<span class="cline-any cline-yes">1x</span>
|
|
381
|
+
<span class="cline-any cline-yes">1x</span>
|
|
382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
384
|
+
<span class="cline-any cline-yes">28893x</span>
|
|
385
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
387
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
391
|
+
<span class="cline-any cline-yes">8x</span>
|
|
392
|
+
<span class="cline-any cline-yes">8x</span>
|
|
393
|
+
<span class="cline-any cline-yes">8x</span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-neutral"> </span>
|
|
397
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2122x</span>
|
|
399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
406
|
+
<span class="cline-any cline-yes">2912x</span>
|
|
407
|
+
<span class="cline-any cline-neutral"> </span>
|
|
408
|
+
<span class="cline-any cline-neutral"> </span>
|
|
409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
410
|
+
<span class="cline-any cline-neutral"> </span>
|
|
411
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
|
+
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
414
|
+
<span class="cline-any cline-neutral"> </span>
|
|
415
|
+
<span class="cline-any cline-neutral"> </span>
|
|
416
|
+
<span class="cline-any cline-neutral"> </span>
|
|
417
|
+
<span class="cline-any cline-yes">52x</span>
|
|
418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
420
|
+
<span class="cline-any cline-yes">52x</span>
|
|
421
|
+
<span class="cline-any cline-yes">3x</span>
|
|
422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
424
|
+
<span class="cline-any cline-yes">49x</span>
|
|
425
|
+
<span class="cline-any cline-yes">13x</span>
|
|
426
|
+
<span class="cline-any cline-yes">16x</span>
|
|
427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
428
|
+
<span class="cline-any cline-yes">13x</span>
|
|
429
|
+
<span class="cline-any cline-yes">10x</span>
|
|
430
|
+
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-yes">39x</span>
|
|
434
|
+
<span class="cline-any cline-yes">1x</span>
|
|
435
|
+
<span class="cline-any cline-yes">1x</span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-yes">1x</span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-yes">38x</span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
447
|
+
<span class="cline-any cline-neutral"> </span>
|
|
448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
449
|
+
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
452
|
+
<span class="cline-any cline-neutral"> </span>
|
|
453
|
+
<span class="cline-any cline-yes">48x</span>
|
|
454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
456
|
+
<span class="cline-any cline-yes">48x</span>
|
|
457
|
+
<span class="cline-any cline-yes">43x</span>
|
|
458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
461
|
+
<span class="cline-any cline-yes">5x</span>
|
|
462
|
+
<span class="cline-any cline-yes">1x</span>
|
|
463
|
+
<span class="cline-any cline-neutral"> </span>
|
|
464
|
+
<span class="cline-any cline-neutral"> </span>
|
|
465
|
+
<span class="cline-any cline-yes">4x</span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-yes">4x</span>
|
|
468
|
+
<span class="cline-any cline-yes">3x</span>
|
|
469
|
+
<span class="cline-any cline-yes">14x</span>
|
|
470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
471
|
+
<span class="cline-any cline-neutral"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-yes">4x</span>
|
|
474
|
+
<span class="cline-any cline-yes">2x</span>
|
|
475
|
+
<span class="cline-any cline-yes">8x</span>
|
|
476
|
+
<span class="cline-any cline-neutral"> </span>
|
|
477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
479
|
+
<span class="cline-any cline-yes">4x</span>
|
|
480
|
+
<span class="cline-any cline-neutral"> </span>
|
|
481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-neutral"> </span>
|
|
489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-neutral"> </span>
|
|
496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
503
|
+
<span class="cline-any cline-yes">55x</span>
|
|
504
|
+
<span class="cline-any cline-yes">8x</span>
|
|
505
|
+
<span class="cline-any cline-yes">4x</span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-yes">51x</span>
|
|
510
|
+
<span class="cline-any cline-yes">2x</span>
|
|
511
|
+
<span class="cline-any cline-yes">1x</span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
515
|
+
<span class="cline-any cline-yes">50x</span>
|
|
516
|
+
<span class="cline-any cline-yes">48x</span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-yes">45x</span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
522
|
+
<span class="cline-any cline-yes">45x</span>
|
|
523
|
+
<span class="cline-any cline-yes">1x</span>
|
|
524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-yes">49x</span>
|
|
529
|
+
<span class="cline-any cline-yes">1x</span>
|
|
530
|
+
<span class="cline-any cline-yes">1x</span>
|
|
531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-no"> </span>
|
|
533
|
+
<span class="cline-any cline-neutral"> </span>
|
|
534
|
+
<span class="cline-any cline-neutral"> </span>
|
|
535
|
+
<span class="cline-any cline-neutral"> </span>
|
|
536
|
+
<span class="cline-any cline-yes">52x</span>
|
|
537
|
+
<span class="cline-any cline-yes">55x</span>
|
|
538
|
+
<span class="cline-any cline-neutral"> </span>
|
|
539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
543
|
+
<span class="cline-any cline-neutral"> </span>
|
|
544
|
+
<span class="cline-any cline-neutral"> </span>
|
|
545
|
+
<span class="cline-any cline-yes">15x</span>
|
|
546
|
+
<span class="cline-any cline-yes">15x</span>
|
|
547
|
+
<span class="cline-any cline-yes">15x</span>
|
|
548
|
+
<span class="cline-any cline-neutral"> </span>
|
|
549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
550
|
+
<span class="cline-any cline-neutral"> </span>
|
|
551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
552
|
+
<span class="cline-any cline-neutral"> </span>
|
|
553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
554
|
+
<span class="cline-any cline-neutral"> </span>
|
|
555
|
+
<span class="cline-any cline-yes">6x</span>
|
|
556
|
+
<span class="cline-any cline-yes">6x</span>
|
|
557
|
+
<span class="cline-any cline-yes">12x</span>
|
|
558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
559
|
+
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
561
|
+
<span class="cline-any cline-neutral"> </span>
|
|
562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
564
|
+
<span class="cline-any cline-yes">40x</span>
|
|
565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
566
|
+
<span class="cline-any cline-yes">49x</span>
|
|
567
|
+
<span class="cline-any cline-neutral"> </span>
|
|
568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
570
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { ResolvedTrigger } from '../config/loader.js';
|
|
571
|
+
import type { TriggerType } from '../config/schema.js';
|
|
572
|
+
import { SEVERITY_ORDER } from '../types/index.js';
|
|
573
|
+
import type { EventContext, Severity, SeverityThreshold, SkillReport } from '../types/index.js';
|
|
574
|
+
|
|
575
|
+
/** Maximum number of patterns to cache (LRU eviction when exceeded) */
|
|
576
|
+
const GLOB_CACHE_MAX_SIZE = 1000;
|
|
577
|
+
|
|
578
|
+
/** Cache for compiled glob patterns with LRU eviction */
|
|
579
|
+
const globCache = new Map<string, RegExp>();
|
|
580
|
+
|
|
581
|
+
/** Clear the glob cache (useful for testing) */
|
|
582
|
+
export function clearGlobCache(): void {
|
|
583
|
+
globCache.clear();
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/** Get current cache size (useful for testing) */
|
|
587
|
+
export function getGlobCacheSize(): number {
|
|
588
|
+
return globCache.size;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* Convert a glob pattern to a regex (cached with LRU eviction).
|
|
593
|
+
*/
|
|
594
|
+
function globToRegex(pattern: string): RegExp {
|
|
595
|
+
const cached = globCache.get(pattern);
|
|
596
|
+
if (cached) {
|
|
597
|
+
// Move to end for LRU ordering (delete and re-add)
|
|
598
|
+
globCache.delete(pattern);
|
|
599
|
+
globCache.set(pattern, cached);
|
|
600
|
+
return cached;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
let regexPattern = '';
|
|
604
|
+
|
|
605
|
+
for (let index = 0; index < pattern.length; index++) {
|
|
606
|
+
const char = pattern[index];
|
|
607
|
+
const nextChar = pattern[index + 1];
|
|
608
|
+
const nextNextChar = pattern[index + 2];
|
|
609
|
+
|
|
610
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (char === undefined) {
|
|
611
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
if (char === '*' && nextChar === '*' && nextNextChar === '/') {
|
|
615
|
+
regexPattern += '(?:.*/)?';
|
|
616
|
+
index += 2;
|
|
617
|
+
continue;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
if (char === '*' && nextChar === '*') {
|
|
621
|
+
regexPattern += '.*';
|
|
622
|
+
index += 1;
|
|
623
|
+
continue;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
if (char === '*') {
|
|
627
|
+
regexPattern += '[^/]*';
|
|
628
|
+
continue;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
if (char === '?') {
|
|
632
|
+
regexPattern += '[^/]';
|
|
633
|
+
continue;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
regexPattern += char.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
const regex = new RegExp(`^${regexPattern}$`);
|
|
640
|
+
|
|
641
|
+
// Evict oldest entry if cache is full
|
|
642
|
+
if (globCache.size >= GLOB_CACHE_MAX_SIZE) {
|
|
643
|
+
const oldestKey = globCache.keys().next().value;
|
|
644
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (oldestKey !== undefined) {
|
|
645
|
+
globCache.delete(oldestKey);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
globCache.set(pattern, regex);
|
|
650
|
+
return regex;
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Match a glob pattern against a file path.
|
|
655
|
+
* Supports ** for recursive matching and * for single directory matching.
|
|
656
|
+
*/
|
|
657
|
+
export function matchGlob(pattern: string, path: string): boolean {
|
|
658
|
+
return globToRegex(pattern).test(path);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
* Check if a file list matches the path filters.
|
|
663
|
+
* Returns true if paths match (or no filters), false if all files are excluded.
|
|
664
|
+
*/
|
|
665
|
+
function matchPathFilters(
|
|
666
|
+
filters: { paths?: string[]; ignorePaths?: string[] },
|
|
667
|
+
filenames: string[] | undefined
|
|
668
|
+
): boolean {
|
|
669
|
+
const { paths: pathPatterns, ignorePaths: ignorePatterns } = filters;
|
|
670
|
+
|
|
671
|
+
// Fail trigger match when path filters are defined but filenames unavailable
|
|
672
|
+
if ((pathPatterns || ignorePatterns) && (!filenames || filenames.length === 0)) {
|
|
673
|
+
return false;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
if (pathPatterns && filenames) {
|
|
677
|
+
const hasMatch = filenames.some((file) =>
|
|
678
|
+
pathPatterns.some((pattern) => matchGlob(pattern, file))
|
|
679
|
+
);
|
|
680
|
+
if (!hasMatch) {
|
|
681
|
+
return false;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
if (ignorePatterns && filenames) {
|
|
686
|
+
const allIgnored = filenames.every((file) =>
|
|
687
|
+
ignorePatterns.some((pattern) => matchGlob(pattern, file))
|
|
688
|
+
);
|
|
689
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (allIgnored) {
|
|
690
|
+
return false;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
return true;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Return a copy of the context with only files matching the path filters.
|
|
699
|
+
* If no filters are set, returns the original context unchanged (no copy).
|
|
700
|
+
*/
|
|
701
|
+
export function filterContextByPaths(
|
|
702
|
+
context: EventContext,
|
|
703
|
+
filters: { paths?: string[]; ignorePaths?: string[] }
|
|
704
|
+
): EventContext {
|
|
705
|
+
const { paths: pathPatterns, ignorePaths: ignorePatterns } = filters;
|
|
706
|
+
|
|
707
|
+
// No filters — return original reference
|
|
708
|
+
if (!pathPatterns && !ignorePatterns) {
|
|
709
|
+
return context;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
// No PR context — nothing to filter
|
|
713
|
+
if (!context.pullRequest) {
|
|
714
|
+
return context;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
let files = context.pullRequest.files;
|
|
718
|
+
|
|
719
|
+
if (pathPatterns) {
|
|
720
|
+
files = files.filter((f) =>
|
|
721
|
+
pathPatterns.some((pattern) => matchGlob(pattern, f.filename))
|
|
722
|
+
);
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
if (ignorePatterns) {
|
|
726
|
+
files = files.filter(
|
|
727
|
+
(f) => !ignorePatterns.some((pattern) => matchGlob(pattern, f.filename))
|
|
728
|
+
);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
return {
|
|
732
|
+
...context,
|
|
733
|
+
pullRequest: {
|
|
734
|
+
...context.pullRequest,
|
|
735
|
+
files,
|
|
736
|
+
},
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/**
|
|
741
|
+
* Check if a trigger matches the given event context and environment.
|
|
742
|
+
*
|
|
743
|
+
* Trigger types:
|
|
744
|
+
* - '*' (wildcard): matches all environments, skips event/action checks
|
|
745
|
+
* - 'local': matches only when environment is 'local' (local-only skills)
|
|
746
|
+
* - 'pull_request': matches in 'github' (with event/action checks) and 'local' (path filters only)
|
|
747
|
+
* - 'schedule': matches when event is schedule
|
|
748
|
+
*/
|
|
749
|
+
export function matchTrigger(
|
|
750
|
+
trigger: ResolvedTrigger,
|
|
751
|
+
context: EventContext,
|
|
752
|
+
environment?: TriggerType | 'github'
|
|
753
|
+
): boolean {
|
|
754
|
+
// Wildcard triggers match everywhere, only check path filters
|
|
755
|
+
if (trigger.type === '*') {
|
|
756
|
+
const filenames = context.pullRequest?.files.map((f) => f.filename);
|
|
757
|
+
return matchPathFilters(trigger.filters, filenames);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// Type-based matching with early returns
|
|
761
|
+
if (trigger.type === 'local') {
|
|
762
|
+
if (environment !== 'local') {
|
|
763
|
+
return false;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
if (trigger.type === 'pull_request') {
|
|
768
|
+
if (environment === 'local') {
|
|
769
|
+
// Local mode runs all skills — skip event/action checks, fall through to path filters
|
|
770
|
+
} else {
|
|
771
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (context.eventType !== 'pull_request') {
|
|
772
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
773
|
+
}
|
|
774
|
+
if (!trigger.actions?.includes(context.action)) {
|
|
775
|
+
return false;
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
if (trigger.type === 'schedule') {
|
|
781
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (context.eventType !== 'schedule') {
|
|
782
|
+
return false;
|
|
783
|
+
}
|
|
784
|
+
<span class="cstat-no" title="statement not covered" > return (context.pullRequest?.files.length ?? 0) > 0;</span>
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
// Apply path filters
|
|
788
|
+
const filenames = context.pullRequest?.files.map((f) => f.filename);
|
|
789
|
+
return matchPathFilters(trigger.filters, filenames);
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
/**
|
|
793
|
+
* Check if a report has any findings at or above the given severity threshold.
|
|
794
|
+
* Returns false if failOn is 'off' (disabled).
|
|
795
|
+
*/
|
|
796
|
+
export function shouldFail(report: SkillReport, failOn: SeverityThreshold): boolean {
|
|
797
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (failOn === 'off') <span class="cstat-no" title="statement not covered" >return false;</span>
|
|
798
|
+
const threshold = SEVERITY_ORDER[failOn];
|
|
799
|
+
return report.findings.some((f) => SEVERITY_ORDER[f.severity] <= threshold);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
/**
|
|
803
|
+
* Count findings at or above the given severity threshold.
|
|
804
|
+
* Returns 0 if failOn is 'off' (disabled).
|
|
805
|
+
*/
|
|
806
|
+
export function countFindingsAtOrAbove(report: SkillReport, failOn: SeverityThreshold): number {
|
|
807
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (failOn === 'off') <span class="cstat-no" title="statement not covered" >return 0;</span>
|
|
808
|
+
const threshold = SEVERITY_ORDER[failOn];
|
|
809
|
+
return report.findings.filter((f) => SEVERITY_ORDER[f.severity] <= threshold).length;
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* Count findings of a specific severity across multiple reports.
|
|
814
|
+
*/
|
|
815
|
+
export function countSeverity(reports: SkillReport[], severity: Severity): number {
|
|
816
|
+
return reports.reduce(
|
|
817
|
+
(count, report) =>
|
|
818
|
+
count + report.findings.filter((f) => f.severity === severity).length,
|
|
819
|
+
0
|
|
820
|
+
);
|
|
821
|
+
}
|
|
822
|
+
</pre></td></tr></table></pre>
|
|
823
|
+
|
|
824
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
825
|
+
</div><!-- /wrapper -->
|
|
826
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
827
|
+
Code coverage generated by
|
|
828
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
829
|
+
at 2026-05-17T04:35:52.381Z
|
|
830
|
+
</div>
|
|
831
|
+
<script src="../../prettify.js"></script>
|
|
832
|
+
<script>
|
|
833
|
+
window.onload = function () {
|
|
834
|
+
prettyPrint();
|
|
835
|
+
};
|
|
836
|
+
</script>
|
|
837
|
+
<script src="../../sorter.js"></script>
|
|
838
|
+
<script src="../../block-navigation.js"></script>
|
|
839
|
+
</body>
|
|
840
|
+
</html>
|
|
841
|
+
|