ruby-prof 1.7.2 → 2.0.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.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/{CHANGES → CHANGELOG.md} +112 -178
  3. data/README.md +5 -5
  4. data/bin/ruby-prof +1 -4
  5. data/docs/advanced-usage.md +132 -0
  6. data/docs/alternatives.md +98 -0
  7. data/docs/architecture.md +122 -0
  8. data/docs/best-practices.md +27 -0
  9. data/docs/getting-started.md +130 -0
  10. data/docs/history.md +11 -0
  11. data/docs/index.md +45 -0
  12. data/docs/profiling-rails.md +64 -0
  13. data/docs/public/examples/example.rb +33 -0
  14. data/docs/public/examples/generate_reports.rb +92 -0
  15. data/docs/public/examples/reports/call_info.txt +27 -0
  16. data/docs/public/examples/reports/call_stack.html +835 -0
  17. data/docs/public/examples/reports/callgrind.out +150 -0
  18. data/docs/public/examples/reports/flame_graph.html +408 -0
  19. data/docs/public/examples/reports/flat.txt +45 -0
  20. data/docs/public/examples/reports/graph.dot +129 -0
  21. data/docs/public/examples/reports/graph.html +1319 -0
  22. data/docs/public/examples/reports/graph.txt +100 -0
  23. data/docs/public/examples/reports/graphviz_viewer.html +1 -0
  24. data/docs/public/images/call_stack.png +0 -0
  25. data/docs/public/images/class_diagram.png +0 -0
  26. data/docs/public/images/dot_printer.png +0 -0
  27. data/docs/public/images/flame_graph.png +0 -0
  28. data/docs/public/images/flat.png +0 -0
  29. data/docs/public/images/graph.png +0 -0
  30. data/docs/public/images/graph_html.png +0 -0
  31. data/docs/public/images/ruby-prof-logo.svg +1 -0
  32. data/docs/reports.md +150 -0
  33. data/docs/stylesheets/extra.css +80 -0
  34. data/ext/ruby_prof/rp_allocation.c +0 -15
  35. data/ext/ruby_prof/rp_allocation.h +29 -33
  36. data/ext/ruby_prof/rp_call_tree.c +3 -0
  37. data/ext/ruby_prof/rp_call_tree.h +1 -4
  38. data/ext/ruby_prof/rp_call_trees.h +1 -4
  39. data/ext/ruby_prof/rp_measurement.c +0 -5
  40. data/ext/ruby_prof/rp_measurement.h +49 -53
  41. data/ext/ruby_prof/rp_method.c +3 -0
  42. data/ext/ruby_prof/rp_method.h +1 -4
  43. data/ext/ruby_prof/rp_profile.c +1 -1
  44. data/ext/ruby_prof/rp_profile.h +1 -5
  45. data/ext/ruby_prof/rp_stack.h +50 -53
  46. data/ext/ruby_prof/rp_thread.h +1 -4
  47. data/ext/ruby_prof/ruby_prof.h +1 -4
  48. data/ext/ruby_prof/vc/ruby_prof.vcxproj +7 -8
  49. data/lib/ruby-prof/assets/call_stack_printer.html.erb +746 -711
  50. data/lib/ruby-prof/assets/flame_graph_printer.html.erb +412 -0
  51. data/lib/ruby-prof/assets/graph_printer.html.erb +355 -355
  52. data/lib/ruby-prof/call_tree.rb +57 -57
  53. data/lib/ruby-prof/call_tree_visitor.rb +36 -36
  54. data/lib/ruby-prof/measurement.rb +17 -17
  55. data/lib/ruby-prof/printers/abstract_printer.rb +19 -33
  56. data/lib/ruby-prof/printers/call_info_printer.rb +53 -53
  57. data/lib/ruby-prof/printers/call_stack_printer.rb +168 -180
  58. data/lib/ruby-prof/printers/call_tree_printer.rb +132 -145
  59. data/lib/ruby-prof/printers/dot_printer.rb +177 -132
  60. data/lib/ruby-prof/printers/flame_graph_printer.rb +79 -0
  61. data/lib/ruby-prof/printers/flat_printer.rb +52 -52
  62. data/lib/ruby-prof/printers/graph_html_printer.rb +62 -63
  63. data/lib/ruby-prof/printers/graph_printer.rb +112 -113
  64. data/lib/ruby-prof/printers/multi_printer.rb +134 -127
  65. data/lib/ruby-prof/profile.rb +13 -0
  66. data/lib/ruby-prof/rack.rb +114 -105
  67. data/lib/ruby-prof/task.rb +147 -147
  68. data/lib/ruby-prof/thread.rb +20 -20
  69. data/lib/ruby-prof/version.rb +1 -1
  70. data/lib/ruby-prof.rb +50 -52
  71. data/lib/unprof.rb +10 -10
  72. data/ruby-prof.gemspec +5 -5
  73. data/test/abstract_printer_test.rb +25 -27
  74. data/test/alias_test.rb +203 -117
  75. data/test/call_tree_builder.rb +126 -126
  76. data/test/call_tree_visitor_test.rb +27 -27
  77. data/test/call_trees_test.rb +66 -66
  78. data/test/duplicate_names_test.rb +32 -32
  79. data/test/dynamic_method_test.rb +50 -50
  80. data/test/exceptions_test.rb +24 -24
  81. data/test/exclude_threads_test.rb +48 -48
  82. data/test/fiber_test.rb +72 -72
  83. data/test/inverse_call_tree_test.rb +174 -174
  84. data/test/line_number_test.rb +138 -1
  85. data/test/marshal_test.rb +144 -145
  86. data/test/measure_allocations.rb +26 -26
  87. data/test/measure_allocations_test.rb +340 -1
  88. data/test/measure_process_time_test.rb +3098 -3142
  89. data/test/measure_times.rb +56 -56
  90. data/test/measure_wall_time_test.rb +511 -372
  91. data/test/measurement_test.rb +82 -82
  92. data/test/merge_test.rb +48 -48
  93. data/test/multi_printer_test.rb +52 -66
  94. data/test/no_method_class_test.rb +15 -15
  95. data/test/pause_resume_test.rb +171 -171
  96. data/test/prime.rb +54 -54
  97. data/test/prime_script.rb +5 -5
  98. data/test/printer_call_stack_test.rb +28 -27
  99. data/test/printer_call_tree_test.rb +30 -30
  100. data/test/printer_flame_graph_test.rb +82 -0
  101. data/test/printer_flat_test.rb +99 -99
  102. data/test/printer_graph_html_test.rb +62 -59
  103. data/test/printer_graph_test.rb +42 -40
  104. data/test/printers_test.rb +28 -44
  105. data/test/printing_recursive_graph_test.rb +81 -81
  106. data/test/profile_test.rb +101 -101
  107. data/test/rack_test.rb +103 -93
  108. data/test/recursive_test.rb +139 -139
  109. data/test/scheduler.rb +4 -0
  110. data/test/singleton_test.rb +39 -38
  111. data/test/stack_printer_test.rb +61 -61
  112. data/test/start_stop_test.rb +106 -106
  113. data/test/test_helper.rb +4 -0
  114. data/test/thread_test.rb +29 -29
  115. data/test/unique_call_path_test.rb +123 -123
  116. data/test/yarv_test.rb +56 -56
  117. metadata +53 -11
  118. data/ext/ruby_prof/rp_measure_memory.c +0 -46
  119. data/lib/ruby-prof/compatibility.rb +0 -113
  120. data/test/compatibility_test.rb +0 -49
  121. data/test/measure_memory_test.rb +0 -1193
@@ -0,0 +1,1319 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style media="all" type="text/css">
5
+ body {
6
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
7
+ background-color: #F5F7FB;
8
+ margin: 0;
9
+ padding: 0;
10
+ font-size: 16px;
11
+ }
12
+
13
+ table {
14
+ border-collapse: collapse;
15
+ /* border: 1px solid #E1E3E7; */
16
+ border: 1px solid #F3F9FE;
17
+ font-size: 14px;
18
+ line-height: normal;
19
+ width: 100%;
20
+ }
21
+
22
+ table:empty {
23
+ display: none;
24
+ }
25
+
26
+ th:first-child {
27
+ border-left: 0;
28
+ }
29
+
30
+ th {
31
+ text-align: center;
32
+ background: #F3F9FE;
33
+ padding: 1rem;
34
+ /* border-left: 1px solid #E1E3E7; */
35
+ text-transform: uppercase;
36
+ font-size: 13px;
37
+ letter-spacing: 1px;
38
+ }
39
+
40
+ tr.break td {
41
+ border: 0;
42
+ border-top: 1px solid #BDC3DD;
43
+ padding: 0;
44
+ margin: 0;
45
+ }
46
+
47
+ tr.method td {
48
+ font-weight: bold;
49
+ }
50
+
51
+ td {
52
+ padding: 0.5em;
53
+ }
54
+
55
+ td:first-child {
56
+ width: 190px;
57
+ }
58
+
59
+ tr > td > table {
60
+ box-shadow: 0px -2px 1px #F9FAFB, 0px 1px 1px #E4EEEE, 0px 1px 2px #EEF3F8;
61
+ border-radius: 2px;
62
+ overflow: hidden;
63
+ }
64
+
65
+ tr.break + tr > td.method_name {
66
+ font-weight: bold;
67
+ }
68
+
69
+ td {
70
+ /* I'm removing this border because I think it looks way cleaner without it but feel free to add it if you feel it's necessary */
71
+ /* border-left: 1px solid #E1E3E7; */
72
+ text-align: center;
73
+ }
74
+
75
+ a {
76
+ text-decoration: none;
77
+ }
78
+
79
+ .method_name {
80
+ text-align: left;
81
+ }
82
+
83
+ tfoot td {
84
+ text-align: left;
85
+ }
86
+
87
+ .report-header {
88
+ background-color: #0D2483;
89
+ color: white;
90
+ padding: 1.5rem 2rem;
91
+ }
92
+
93
+ .report-header > div {
94
+ display: flex;
95
+ flex-direction: row;
96
+ align-items: center;
97
+ }
98
+
99
+ .report-header h1 {
100
+ margin-bottom: 0;
101
+ }
102
+
103
+ h1, h2, h3, h4, h5, h6 {
104
+ margin-top: 0;
105
+ margin-bottom: 0.5rem;
106
+ }
107
+
108
+ h6 {
109
+ font-size: 0.75rem;
110
+ text-transform: uppercase;
111
+ letter-spacing: 1.5px;
112
+ color: rgba(255, 255, 255, 0.6);
113
+ }
114
+
115
+ .table-header {
116
+ padding: 3rem 0 1rem;
117
+ }
118
+
119
+ .table-wrapper {
120
+ margin: 1rem auto;
121
+ max-width: 1440px;
122
+ padding: 4rem 5rem;
123
+ background: white;
124
+ border-radius: 0.5rem;
125
+ }
126
+
127
+ .center {
128
+ max-width: 1440px;
129
+ margin: 0 auto;
130
+ }
131
+
132
+ .layout-right {
133
+ margin-left: auto;
134
+ }
135
+
136
+ .text-right {
137
+ display: flex;
138
+ align-items: flex-end;
139
+ flex-direction: column;
140
+ }
141
+
142
+ .timestamp {
143
+ font-size: 12px;
144
+ margin-bottom: 1rem;
145
+ color: rgba(255, 255, 255, 0.6);
146
+ }
147
+
148
+ .logo {
149
+ width: 140px;
150
+ height: 30px;
151
+ opacity: 0.5;
152
+ background-repeat: no-repeat;
153
+ background-image: url("data:image/svg+xml,%3Csvg id='Layer_1' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 190 41'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fff%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M63.49 16.74c0-1.37-.91-2-2.26-2h-3.38v3.93h3.58c1.24.01 2.06-.56 2.06-1.93zM110.43 14.75h-3.6v5h3.6a2.32 2.32 0 0 0 2.5-2.49 2.34 2.34 0 0 0-2.5-2.51zM128.77 14.75h-3.53v4.94h3.53a2.28 2.28 0 0 0 2.47-2.45 2.3 2.3 0 0 0-2.47-2.49zM61.81 21.83h-4v4.32h3.91c1.44 0 2.45-.62 2.45-2.14s-.99-2.18-2.36-2.18zM21 14.75h-3.57v4.94H21a2.28 2.28 0 0 0 2.47-2.45A2.3 2.3 0 0 0 21 14.75z'/%3E%3Cpath class='cls-1' d='M184 .44H5.87A4.93 4.93 0 0 0 .94 5.37V35.5a4.94 4.94 0 0 0 4.93 4.94H184a4.94 4.94 0 0 0 4.94-4.94V5.37A4.94 4.94 0 0 0 184 .44zm-34.38 10.78c4.79 0 8.46 2.89 9.18 7.54h-3.86a5.48 5.48 0 0 0-10.68 0h-3.83c.71-4.65 4.36-7.54 9.19-7.54zM24 29.44L20.46 23h-3v6.46h-3.72v-18h7.68c3.41 0 5.78 2.07 5.78 5.76a5.34 5.34 0 0 1-2.88 5.14l3.82 7.06zm24.31-7.3c0 4.8-2.92 7.56-7.63 7.56S33 26.94 33 22.14V11.48h3.69v10.61c0 2.81 1.37 4.32 4 4.32s3.94-1.51 3.94-4.32V11.48h3.69zm13.92 7.3h-8v-18h7.52c3.24 0 5.59 1.61 5.59 5A4 4 0 0 1 65.51 20 4.22 4.22 0 0 1 68 24.21c0 3.43-2.4 5.23-5.81 5.23zm19.66-6.92v6.92h-3.7v-6.92l-6.81-11h4.29L80 18.85l4.34-7.37h4.32zm16-.5h-7.62v-3.26h7.59zm13 1h-4v6.39h-3.72v-18h7.77c3.41 0 5.79 2.09 5.79 5.79s-2.41 5.85-5.82 5.85zm20.86 6.39L128.26 23h-3v6.46h-3.72v-18h7.69c3.4 0 5.78 2.07 5.78 5.76a5.34 5.34 0 0 1-2.88 5.14l3.87 7.08zm17.85.26c-4.88 0-8.55-2.95-9.21-7.68h3.81A5.49 5.49 0 0 0 155 22h3.84c-.69 4.75-4.38 7.7-9.22 7.7zm18.4-.23h-3.72v-3.7H168zm6.36-7.54h-10.05v-3.26h10.08zm1.44-7.16h-11.49v-3.26h11.52z'/%3E%3C/svg%3E");
154
+ }
155
+ </style>
156
+ </head>
157
+ <body>
158
+ <div class="report-header">
159
+ <div class="center">
160
+ <div class="layout-left">
161
+ <h6>Profile Report</h6>
162
+ <h1>Wall Time</h1>
163
+ </div>
164
+ <div class="layout-right text-right">
165
+ <div class="timestamp">Sunday, February 8 at 12:46:07 AM (Pacific Standard Time)</div>
166
+ <div class="logo"></div>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ <div class="table-wrapper">
171
+ <table>
172
+ <tr>
173
+ <th>Thread ID</th>
174
+ <th>Fiber ID</th>
175
+ <th>Total</th>
176
+ </tr>
177
+
178
+ <tr>
179
+ <td>464</td>
180
+ <td><a href="#456">456</a></td>
181
+ <td>0.007774999990942888</td>
182
+ </tr>
183
+
184
+ </table>
185
+
186
+ <!-- Methods Tables -->
187
+
188
+ <h2><a name="456">Thread 464, Fiber: 456</a></h2>
189
+ <table>
190
+ <thead>
191
+ <tr>
192
+ <th>%Total</th>
193
+ <th>%Self</th>
194
+ <th>Total</th>
195
+ <th>Self</th>
196
+ <th>Wait</th>
197
+ <th>Child</th>
198
+ <th>Calls</th>
199
+ <th class="method_name">Name</th>
200
+
201
+ <th>Line</th>
202
+ </tr>
203
+ </thead>
204
+ <tbody>
205
+
206
+
207
+ <!-- Parents -->
208
+
209
+ <tr class="method">
210
+ <td>100.00%</td>
211
+ <td>0.19%</td>
212
+ <td>0.01</td>
213
+ <td>0.00</td>
214
+ <td>0.00</td>
215
+ <td>0.01</td>
216
+ <td>1</td>
217
+ <td class="method_name">
218
+ <a name="[global]__456">
219
+ [global]#
220
+ </a>
221
+ </td>
222
+
223
+
224
+
225
+ <td><a href="../generate_reports.rb" title="generate_reports.rb">24</a></td>
226
+ </tr>
227
+
228
+
229
+
230
+ <!-- Children -->
231
+
232
+ <tr>
233
+ <td>&nbsp;</td>
234
+ <td>&nbsp;</td>
235
+ <td>0.01</td>
236
+ <td>0.00</td>
237
+ <td>0.00</td>
238
+ <td>0.01</td>
239
+ <td>1/1</td>
240
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
241
+
242
+ <td><a href="../generate_reports.rb" title="generate_reports.rb">24</a>
243
+ </tr>
244
+
245
+
246
+ <!-- Create divider row -->
247
+ <tr class="break">
248
+ <td colspan="10"></td>
249
+ </tr>
250
+
251
+
252
+ <!-- Parents -->
253
+
254
+ <tr>
255
+ <td>&nbsp;</td>
256
+ <td>&nbsp;</td>
257
+ <td>0.01</td>
258
+ <td>0.00</td>
259
+ <td>0.00</td>
260
+ <td>0.01</td>
261
+ <td>1/1</td>
262
+ <td class="method_name"><a href="#[global]__456">[global]#</a></td>
263
+
264
+ <td><a href="../generate_reports.rb" title="generate_reports.rb">24</a></td>
265
+ </tr>
266
+
267
+ <tr class="method">
268
+ <td>99.81%</td>
269
+ <td>0.16%</td>
270
+ <td>0.01</td>
271
+ <td>0.00</td>
272
+ <td>0.00</td>
273
+ <td>0.01</td>
274
+ <td>1</td>
275
+ <td class="method_name">
276
+ <a name="Object_run_example_456">
277
+ Object#run_example
278
+ </a>
279
+ </td>
280
+
281
+
282
+
283
+ <td><a href="../example.rb" title="example.rb">22</a></td>
284
+ </tr>
285
+
286
+
287
+
288
+ <!-- Children -->
289
+
290
+ <tr>
291
+ <td>&nbsp;</td>
292
+ <td>&nbsp;</td>
293
+ <td>0.01</td>
294
+ <td>0.00</td>
295
+ <td>0.00</td>
296
+ <td>0.01</td>
297
+ <td>1/1</td>
298
+ <td class="method_name"><a href="#Object_count_words_456">Object#count_words</a></td>
299
+
300
+ <td><a href="../example.rb" title="example.rb">31</a>
301
+ </tr>
302
+
303
+ <tr>
304
+ <td>&nbsp;</td>
305
+ <td>&nbsp;</td>
306
+ <td>0.00</td>
307
+ <td>0.00</td>
308
+ <td>0.00</td>
309
+ <td>0.00</td>
310
+ <td>1/1</td>
311
+ <td class="method_name"><a href="#Object_tokenize_456">Object#tokenize</a></td>
312
+
313
+ <td><a href="../example.rb" title="example.rb">30</a>
314
+ </tr>
315
+
316
+ <tr>
317
+ <td>&nbsp;</td>
318
+ <td>&nbsp;</td>
319
+ <td>0.00</td>
320
+ <td>0.00</td>
321
+ <td>0.00</td>
322
+ <td>0.00</td>
323
+ <td>1/1</td>
324
+ <td class="method_name"><a href="#Object_normalize_456">Object#normalize</a></td>
325
+
326
+ <td><a href="../example.rb" title="example.rb">29</a>
327
+ </tr>
328
+
329
+ <tr>
330
+ <td>&nbsp;</td>
331
+ <td>&nbsp;</td>
332
+ <td>0.00</td>
333
+ <td>0.00</td>
334
+ <td>0.00</td>
335
+ <td>0.00</td>
336
+ <td>1/1</td>
337
+ <td class="method_name"><a href="#Object_top_words_456">Object#top_words</a></td>
338
+
339
+ <td><a href="../example.rb" title="example.rb">32</a>
340
+ </tr>
341
+
342
+ <tr>
343
+ <td>&nbsp;</td>
344
+ <td>&nbsp;</td>
345
+ <td>0.00</td>
346
+ <td>0.00</td>
347
+ <td>0.00</td>
348
+ <td>0.00</td>
349
+ <td>1/1</td>
350
+ <td class="method_name"><a href="#String_*_456">String#*</a></td>
351
+
352
+ <td><a href="../example.rb" title="example.rb">23</a>
353
+ </tr>
354
+
355
+
356
+ <!-- Create divider row -->
357
+ <tr class="break">
358
+ <td colspan="10"></td>
359
+ </tr>
360
+
361
+
362
+ <!-- Parents -->
363
+
364
+ <tr>
365
+ <td>&nbsp;</td>
366
+ <td>&nbsp;</td>
367
+ <td>0.01</td>
368
+ <td>0.00</td>
369
+ <td>0.00</td>
370
+ <td>0.01</td>
371
+ <td>1/1</td>
372
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
373
+
374
+ <td><a href="../example.rb" title="example.rb">31</a></td>
375
+ </tr>
376
+
377
+ <tr class="method">
378
+ <td>71.81%</td>
379
+ <td>0.09%</td>
380
+ <td>0.01</td>
381
+ <td>0.00</td>
382
+ <td>0.00</td>
383
+ <td>0.01</td>
384
+ <td>1</td>
385
+ <td class="method_name">
386
+ <a name="Object_count_words_456">
387
+ Object#count_words
388
+ </a>
389
+ </td>
390
+
391
+
392
+
393
+ <td><a href="../example.rb" title="example.rb">12</a></td>
394
+ </tr>
395
+
396
+
397
+
398
+ <!-- Children -->
399
+
400
+ <tr>
401
+ <td>&nbsp;</td>
402
+ <td>&nbsp;</td>
403
+ <td>0.01</td>
404
+ <td>0.00</td>
405
+ <td>0.00</td>
406
+ <td>0.00</td>
407
+ <td>1/1</td>
408
+ <td class="method_name"><a href="#Array_each_456">Array#each</a></td>
409
+
410
+ <td><a href="../example.rb" title="example.rb">14</a>
411
+ </tr>
412
+
413
+ <tr>
414
+ <td>&nbsp;</td>
415
+ <td>&nbsp;</td>
416
+ <td>0.00</td>
417
+ <td>0.00</td>
418
+ <td>0.00</td>
419
+ <td>0.00</td>
420
+ <td>1/1</td>
421
+ <td class="method_name"><a href="#Hash_initialize_456">Hash#initialize</a></td>
422
+
423
+ <td><a href="../example.rb" title="example.rb">13</a>
424
+ </tr>
425
+
426
+
427
+ <!-- Create divider row -->
428
+ <tr class="break">
429
+ <td colspan="10"></td>
430
+ </tr>
431
+
432
+
433
+ <!-- Parents -->
434
+
435
+ <tr>
436
+ <td>&nbsp;</td>
437
+ <td>&nbsp;</td>
438
+ <td>0.01</td>
439
+ <td>0.00</td>
440
+ <td>0.00</td>
441
+ <td>0.00</td>
442
+ <td>1/1</td>
443
+ <td class="method_name"><a href="#Object_count_words_456">Object#count_words</a></td>
444
+
445
+ <td><a href="../example.rb" title="example.rb">14</a></td>
446
+ </tr>
447
+
448
+ <tr class="method">
449
+ <td>71.68%</td>
450
+ <td>38.85%</td>
451
+ <td>0.01</td>
452
+ <td>0.00</td>
453
+ <td>0.00</td>
454
+ <td>0.00</td>
455
+ <td>1</td>
456
+ <td class="method_name">
457
+ <a name="Array_each_456">
458
+ Array#each
459
+ </a>
460
+ </td>
461
+
462
+
463
+
464
+ <td></td>
465
+ </tr>
466
+
467
+
468
+
469
+ <!-- Children -->
470
+
471
+ <tr>
472
+ <td>&nbsp;</td>
473
+ <td>&nbsp;</td>
474
+ <td>0.00</td>
475
+ <td>0.00</td>
476
+ <td>0.00</td>
477
+ <td>0.00</td>
478
+ <td>5800/5800</td>
479
+ <td class="method_name"><a href="#Hash_[]__456">Hash#[]=</a></td>
480
+
481
+ <td><a href="../example.rb" title="example.rb">14</a>
482
+ </tr>
483
+
484
+ <tr>
485
+ <td>&nbsp;</td>
486
+ <td>&nbsp;</td>
487
+ <td>0.00</td>
488
+ <td>0.00</td>
489
+ <td>0.00</td>
490
+ <td>0.00</td>
491
+ <td>5800/5800</td>
492
+ <td class="method_name"><a href="#Hash_[]_456">Hash#[]</a></td>
493
+
494
+ <td><a href="../example.rb" title="example.rb">14</a>
495
+ </tr>
496
+
497
+ <tr>
498
+ <td>&nbsp;</td>
499
+ <td>&nbsp;</td>
500
+ <td>0.00</td>
501
+ <td>0.00</td>
502
+ <td>0.00</td>
503
+ <td>0.00</td>
504
+ <td>5800/5800</td>
505
+ <td class="method_name"><a href="#Integer_+_456">Integer#+</a></td>
506
+
507
+ <td><a href="../example.rb" title="example.rb">14</a>
508
+ </tr>
509
+
510
+
511
+ <!-- Create divider row -->
512
+ <tr class="break">
513
+ <td colspan="10"></td>
514
+ </tr>
515
+
516
+
517
+ <!-- Parents -->
518
+
519
+ <tr>
520
+ <td>&nbsp;</td>
521
+ <td>&nbsp;</td>
522
+ <td>0.00</td>
523
+ <td>0.00</td>
524
+ <td>0.00</td>
525
+ <td>0.00</td>
526
+ <td>1/1</td>
527
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
528
+
529
+ <td><a href="../example.rb" title="example.rb">30</a></td>
530
+ </tr>
531
+
532
+ <tr class="method">
533
+ <td>19.43%</td>
534
+ <td>0.03%</td>
535
+ <td>0.00</td>
536
+ <td>0.00</td>
537
+ <td>0.00</td>
538
+ <td>0.00</td>
539
+ <td>1</td>
540
+ <td class="method_name">
541
+ <a name="Object_tokenize_456">
542
+ Object#tokenize
543
+ </a>
544
+ </td>
545
+
546
+
547
+
548
+ <td><a href="../example.rb" title="example.rb">8</a></td>
549
+ </tr>
550
+
551
+
552
+
553
+ <!-- Children -->
554
+
555
+ <tr>
556
+ <td>&nbsp;</td>
557
+ <td>&nbsp;</td>
558
+ <td>0.00</td>
559
+ <td>0.00</td>
560
+ <td>0.00</td>
561
+ <td>0.00</td>
562
+ <td>1/1</td>
563
+ <td class="method_name"><a href="#String_split_456">String#split</a></td>
564
+
565
+ <td><a href="../example.rb" title="example.rb">9</a>
566
+ </tr>
567
+
568
+
569
+ <!-- Create divider row -->
570
+ <tr class="break">
571
+ <td colspan="10"></td>
572
+ </tr>
573
+
574
+
575
+ <!-- Parents -->
576
+
577
+ <tr>
578
+ <td>&nbsp;</td>
579
+ <td>&nbsp;</td>
580
+ <td>0.00</td>
581
+ <td>0.00</td>
582
+ <td>0.00</td>
583
+ <td>0.00</td>
584
+ <td>1/1</td>
585
+ <td class="method_name"><a href="#Object_tokenize_456">Object#tokenize</a></td>
586
+
587
+ <td><a href="../example.rb" title="example.rb">9</a></td>
588
+ </tr>
589
+
590
+ <tr class="method">
591
+ <td>19.40%</td>
592
+ <td>19.40%</td>
593
+ <td>0.00</td>
594
+ <td>0.00</td>
595
+ <td>0.00</td>
596
+ <td>0.00</td>
597
+ <td>1</td>
598
+ <td class="method_name">
599
+ <a name="String_split_456">
600
+ String#split
601
+ </a>
602
+ </td>
603
+
604
+
605
+
606
+ <td></td>
607
+ </tr>
608
+
609
+
610
+
611
+ <!-- Children -->
612
+
613
+
614
+ <!-- Create divider row -->
615
+ <tr class="break">
616
+ <td colspan="10"></td>
617
+ </tr>
618
+
619
+
620
+ <!-- Parents -->
621
+
622
+ <tr>
623
+ <td>&nbsp;</td>
624
+ <td>&nbsp;</td>
625
+ <td>0.00</td>
626
+ <td>0.00</td>
627
+ <td>0.00</td>
628
+ <td>0.00</td>
629
+ <td>5800/5800</td>
630
+ <td class="method_name"><a href="#Array_each_456">Array#each</a></td>
631
+
632
+ <td></td>
633
+ </tr>
634
+
635
+ <tr class="method">
636
+ <td>12.86%</td>
637
+ <td>12.86%</td>
638
+ <td>0.00</td>
639
+ <td>0.00</td>
640
+ <td>0.00</td>
641
+ <td>0.00</td>
642
+ <td>5800</td>
643
+ <td class="method_name">
644
+ <a name="Hash_[]__456">
645
+ Hash#[]=
646
+ </a>
647
+ </td>
648
+
649
+
650
+
651
+ <td></td>
652
+ </tr>
653
+
654
+
655
+
656
+ <!-- Children -->
657
+
658
+
659
+ <!-- Create divider row -->
660
+ <tr class="break">
661
+ <td colspan="10"></td>
662
+ </tr>
663
+
664
+
665
+ <!-- Parents -->
666
+
667
+ <tr>
668
+ <td>&nbsp;</td>
669
+ <td>&nbsp;</td>
670
+ <td>0.00</td>
671
+ <td>0.00</td>
672
+ <td>0.00</td>
673
+ <td>0.00</td>
674
+ <td>5800/5800</td>
675
+ <td class="method_name"><a href="#Array_each_456">Array#each</a></td>
676
+
677
+ <td></td>
678
+ </tr>
679
+
680
+ <tr class="method">
681
+ <td>11.29%</td>
682
+ <td>11.29%</td>
683
+ <td>0.00</td>
684
+ <td>0.00</td>
685
+ <td>0.00</td>
686
+ <td>0.00</td>
687
+ <td>5800</td>
688
+ <td class="method_name">
689
+ <a name="Hash_[]_456">
690
+ Hash#[]
691
+ </a>
692
+ </td>
693
+
694
+
695
+
696
+ <td></td>
697
+ </tr>
698
+
699
+
700
+
701
+ <!-- Children -->
702
+
703
+
704
+ <!-- Create divider row -->
705
+ <tr class="break">
706
+ <td colspan="10"></td>
707
+ </tr>
708
+
709
+
710
+ <!-- Parents -->
711
+
712
+ <tr>
713
+ <td>&nbsp;</td>
714
+ <td>&nbsp;</td>
715
+ <td>0.00</td>
716
+ <td>0.00</td>
717
+ <td>0.00</td>
718
+ <td>0.00</td>
719
+ <td>1/1</td>
720
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
721
+
722
+ <td><a href="../example.rb" title="example.rb">29</a></td>
723
+ </tr>
724
+
725
+ <tr class="method">
726
+ <td>7.86%</td>
727
+ <td>0.05%</td>
728
+ <td>0.00</td>
729
+ <td>0.00</td>
730
+ <td>0.00</td>
731
+ <td>0.00</td>
732
+ <td>1</td>
733
+ <td class="method_name">
734
+ <a name="Object_normalize_456">
735
+ Object#normalize
736
+ </a>
737
+ </td>
738
+
739
+
740
+
741
+ <td><a href="../example.rb" title="example.rb">4</a></td>
742
+ </tr>
743
+
744
+
745
+
746
+ <!-- Children -->
747
+
748
+ <tr>
749
+ <td>&nbsp;</td>
750
+ <td>&nbsp;</td>
751
+ <td>0.00</td>
752
+ <td>0.00</td>
753
+ <td>0.00</td>
754
+ <td>0.00</td>
755
+ <td>1/1</td>
756
+ <td class="method_name"><a href="#String_gsub_456">String#gsub</a></td>
757
+
758
+ <td><a href="../example.rb" title="example.rb">5</a>
759
+ </tr>
760
+
761
+ <tr>
762
+ <td>&nbsp;</td>
763
+ <td>&nbsp;</td>
764
+ <td>0.00</td>
765
+ <td>0.00</td>
766
+ <td>0.00</td>
767
+ <td>0.00</td>
768
+ <td>1/1</td>
769
+ <td class="method_name"><a href="#String_downcase_456">String#downcase</a></td>
770
+
771
+ <td><a href="../example.rb" title="example.rb">5</a>
772
+ </tr>
773
+
774
+
775
+ <!-- Create divider row -->
776
+ <tr class="break">
777
+ <td colspan="10"></td>
778
+ </tr>
779
+
780
+
781
+ <!-- Parents -->
782
+
783
+ <tr>
784
+ <td>&nbsp;</td>
785
+ <td>&nbsp;</td>
786
+ <td>0.00</td>
787
+ <td>0.00</td>
788
+ <td>0.00</td>
789
+ <td>0.00</td>
790
+ <td>1/1</td>
791
+ <td class="method_name"><a href="#Object_normalize_456">Object#normalize</a></td>
792
+
793
+ <td><a href="../example.rb" title="example.rb">5</a></td>
794
+ </tr>
795
+
796
+ <tr class="method">
797
+ <td>7.61%</td>
798
+ <td>7.61%</td>
799
+ <td>0.00</td>
800
+ <td>0.00</td>
801
+ <td>0.00</td>
802
+ <td>0.00</td>
803
+ <td>1</td>
804
+ <td class="method_name">
805
+ <a name="String_gsub_456">
806
+ String#gsub
807
+ </a>
808
+ </td>
809
+
810
+
811
+
812
+ <td></td>
813
+ </tr>
814
+
815
+
816
+
817
+ <!-- Children -->
818
+
819
+
820
+ <!-- Create divider row -->
821
+ <tr class="break">
822
+ <td colspan="10"></td>
823
+ </tr>
824
+
825
+
826
+ <!-- Parents -->
827
+
828
+ <tr>
829
+ <td>&nbsp;</td>
830
+ <td>&nbsp;</td>
831
+ <td>0.00</td>
832
+ <td>0.00</td>
833
+ <td>0.00</td>
834
+ <td>0.00</td>
835
+ <td>5800/5800</td>
836
+ <td class="method_name"><a href="#Array_each_456">Array#each</a></td>
837
+
838
+ <td></td>
839
+ </tr>
840
+
841
+ <tr class="method">
842
+ <td>8.68%</td>
843
+ <td>8.68%</td>
844
+ <td>0.00</td>
845
+ <td>0.00</td>
846
+ <td>0.00</td>
847
+ <td>0.00</td>
848
+ <td>5800</td>
849
+ <td class="method_name">
850
+ <a name="Integer_+_456">
851
+ Integer#+
852
+ </a>
853
+ </td>
854
+
855
+
856
+
857
+ <td></td>
858
+ </tr>
859
+
860
+
861
+
862
+ <!-- Children -->
863
+
864
+
865
+ <!-- Create divider row -->
866
+ <tr class="break">
867
+ <td colspan="10"></td>
868
+ </tr>
869
+
870
+
871
+ <!-- Parents -->
872
+
873
+ <tr>
874
+ <td>&nbsp;</td>
875
+ <td>&nbsp;</td>
876
+ <td>0.00</td>
877
+ <td>0.00</td>
878
+ <td>0.00</td>
879
+ <td>0.00</td>
880
+ <td>1/1</td>
881
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
882
+
883
+ <td><a href="../example.rb" title="example.rb">23</a></td>
884
+ </tr>
885
+
886
+ <tr class="method">
887
+ <td>0.07%</td>
888
+ <td>0.07%</td>
889
+ <td>0.00</td>
890
+ <td>0.00</td>
891
+ <td>0.00</td>
892
+ <td>0.00</td>
893
+ <td>1</td>
894
+ <td class="method_name">
895
+ <a name="String_*_456">
896
+ String#*
897
+ </a>
898
+ </td>
899
+
900
+
901
+
902
+ <td></td>
903
+ </tr>
904
+
905
+
906
+
907
+ <!-- Children -->
908
+
909
+
910
+ <!-- Create divider row -->
911
+ <tr class="break">
912
+ <td colspan="10"></td>
913
+ </tr>
914
+
915
+
916
+ <!-- Parents -->
917
+
918
+ <tr>
919
+ <td>&nbsp;</td>
920
+ <td>&nbsp;</td>
921
+ <td>0.00</td>
922
+ <td>0.00</td>
923
+ <td>0.00</td>
924
+ <td>0.00</td>
925
+ <td>1/1</td>
926
+ <td class="method_name"><a href="#Object_run_example_456">Object#run_example</a></td>
927
+
928
+ <td><a href="../example.rb" title="example.rb">32</a></td>
929
+ </tr>
930
+
931
+ <tr class="method">
932
+ <td>0.49%</td>
933
+ <td>0.08%</td>
934
+ <td>0.00</td>
935
+ <td>0.00</td>
936
+ <td>0.00</td>
937
+ <td>0.00</td>
938
+ <td>1</td>
939
+ <td class="method_name">
940
+ <a name="Object_top_words_456">
941
+ Object#top_words
942
+ </a>
943
+ </td>
944
+
945
+
946
+
947
+ <td><a href="../example.rb" title="example.rb">18</a></td>
948
+ </tr>
949
+
950
+
951
+
952
+ <!-- Children -->
953
+
954
+ <tr>
955
+ <td>&nbsp;</td>
956
+ <td>&nbsp;</td>
957
+ <td>0.00</td>
958
+ <td>0.00</td>
959
+ <td>0.00</td>
960
+ <td>0.00</td>
961
+ <td>1/1</td>
962
+ <td class="method_name"><a href="#Enumerable_sort_by_456">Enumerable#sort_by</a></td>
963
+
964
+ <td><a href="../example.rb" title="example.rb">19</a>
965
+ </tr>
966
+
967
+ <tr>
968
+ <td>&nbsp;</td>
969
+ <td>&nbsp;</td>
970
+ <td>0.00</td>
971
+ <td>0.00</td>
972
+ <td>0.00</td>
973
+ <td>0.00</td>
974
+ <td>1/1</td>
975
+ <td class="method_name"><a href="#Array_take_456">Array#take</a></td>
976
+
977
+ <td><a href="../example.rb" title="example.rb">19</a>
978
+ </tr>
979
+
980
+
981
+ <!-- Create divider row -->
982
+ <tr class="break">
983
+ <td colspan="10"></td>
984
+ </tr>
985
+
986
+
987
+ <!-- Parents -->
988
+
989
+ <tr>
990
+ <td>&nbsp;</td>
991
+ <td>&nbsp;</td>
992
+ <td>0.00</td>
993
+ <td>0.00</td>
994
+ <td>0.00</td>
995
+ <td>0.00</td>
996
+ <td>1/1</td>
997
+ <td class="method_name"><a href="#Object_normalize_456">Object#normalize</a></td>
998
+
999
+ <td><a href="../example.rb" title="example.rb">5</a></td>
1000
+ </tr>
1001
+
1002
+ <tr class="method">
1003
+ <td>0.21%</td>
1004
+ <td>0.21%</td>
1005
+ <td>0.00</td>
1006
+ <td>0.00</td>
1007
+ <td>0.00</td>
1008
+ <td>0.00</td>
1009
+ <td>1</td>
1010
+ <td class="method_name">
1011
+ <a name="String_downcase_456">
1012
+ String#downcase
1013
+ </a>
1014
+ </td>
1015
+
1016
+
1017
+
1018
+ <td></td>
1019
+ </tr>
1020
+
1021
+
1022
+
1023
+ <!-- Children -->
1024
+
1025
+
1026
+ <!-- Create divider row -->
1027
+ <tr class="break">
1028
+ <td colspan="10"></td>
1029
+ </tr>
1030
+
1031
+
1032
+ <!-- Parents -->
1033
+
1034
+ <tr>
1035
+ <td>&nbsp;</td>
1036
+ <td>&nbsp;</td>
1037
+ <td>0.00</td>
1038
+ <td>0.00</td>
1039
+ <td>0.00</td>
1040
+ <td>0.00</td>
1041
+ <td>1/1</td>
1042
+ <td class="method_name"><a href="#Object_count_words_456">Object#count_words</a></td>
1043
+
1044
+ <td><a href="../example.rb" title="example.rb">13</a></td>
1045
+ </tr>
1046
+
1047
+ <tr class="method">
1048
+ <td>0.03%</td>
1049
+ <td>0.03%</td>
1050
+ <td>0.00</td>
1051
+ <td>0.00</td>
1052
+ <td>0.00</td>
1053
+ <td>0.00</td>
1054
+ <td>1</td>
1055
+ <td class="method_name">
1056
+ <a name="Hash_initialize_456">
1057
+ Hash#initialize
1058
+ </a>
1059
+ </td>
1060
+
1061
+
1062
+
1063
+ <td><a href="#" title="internal">37</a></td>
1064
+ </tr>
1065
+
1066
+
1067
+
1068
+ <!-- Children -->
1069
+
1070
+
1071
+ <!-- Create divider row -->
1072
+ <tr class="break">
1073
+ <td colspan="10"></td>
1074
+ </tr>
1075
+
1076
+
1077
+ <!-- Parents -->
1078
+
1079
+ <tr>
1080
+ <td>&nbsp;</td>
1081
+ <td>&nbsp;</td>
1082
+ <td>0.00</td>
1083
+ <td>0.00</td>
1084
+ <td>0.00</td>
1085
+ <td>0.00</td>
1086
+ <td>1/1</td>
1087
+ <td class="method_name"><a href="#Object_top_words_456">Object#top_words</a></td>
1088
+
1089
+ <td><a href="../example.rb" title="example.rb">19</a></td>
1090
+ </tr>
1091
+
1092
+ <tr class="method">
1093
+ <td>0.38%</td>
1094
+ <td>0.09%</td>
1095
+ <td>0.00</td>
1096
+ <td>0.00</td>
1097
+ <td>0.00</td>
1098
+ <td>0.00</td>
1099
+ <td>1</td>
1100
+ <td class="method_name">
1101
+ <a name="Enumerable_sort_by_456">
1102
+ Enumerable#sort_by
1103
+ </a>
1104
+ </td>
1105
+
1106
+
1107
+
1108
+ <td></td>
1109
+ </tr>
1110
+
1111
+
1112
+
1113
+ <!-- Children -->
1114
+
1115
+ <tr>
1116
+ <td>&nbsp;</td>
1117
+ <td>&nbsp;</td>
1118
+ <td>0.00</td>
1119
+ <td>0.00</td>
1120
+ <td>0.00</td>
1121
+ <td>0.00</td>
1122
+ <td>1/1</td>
1123
+ <td class="method_name"><a href="#Hash_each_456">Hash#each</a></td>
1124
+
1125
+ <td>
1126
+ </tr>
1127
+
1128
+
1129
+ <!-- Create divider row -->
1130
+ <tr class="break">
1131
+ <td colspan="10"></td>
1132
+ </tr>
1133
+
1134
+
1135
+ <!-- Parents -->
1136
+
1137
+ <tr>
1138
+ <td>&nbsp;</td>
1139
+ <td>&nbsp;</td>
1140
+ <td>0.00</td>
1141
+ <td>0.00</td>
1142
+ <td>0.00</td>
1143
+ <td>0.00</td>
1144
+ <td>1/1</td>
1145
+ <td class="method_name"><a href="#Object_top_words_456">Object#top_words</a></td>
1146
+
1147
+ <td><a href="../example.rb" title="example.rb">19</a></td>
1148
+ </tr>
1149
+
1150
+ <tr class="method">
1151
+ <td>0.02%</td>
1152
+ <td>0.02%</td>
1153
+ <td>0.00</td>
1154
+ <td>0.00</td>
1155
+ <td>0.00</td>
1156
+ <td>0.00</td>
1157
+ <td>1</td>
1158
+ <td class="method_name">
1159
+ <a name="Array_take_456">
1160
+ Array#take
1161
+ </a>
1162
+ </td>
1163
+
1164
+
1165
+
1166
+ <td></td>
1167
+ </tr>
1168
+
1169
+
1170
+
1171
+ <!-- Children -->
1172
+
1173
+
1174
+ <!-- Create divider row -->
1175
+ <tr class="break">
1176
+ <td colspan="10"></td>
1177
+ </tr>
1178
+
1179
+
1180
+ <!-- Parents -->
1181
+
1182
+ <tr>
1183
+ <td>&nbsp;</td>
1184
+ <td>&nbsp;</td>
1185
+ <td>0.00</td>
1186
+ <td>0.00</td>
1187
+ <td>0.00</td>
1188
+ <td>0.00</td>
1189
+ <td>1/1</td>
1190
+ <td class="method_name"><a href="#Enumerable_sort_by_456">Enumerable#sort_by</a></td>
1191
+
1192
+ <td></td>
1193
+ </tr>
1194
+
1195
+ <tr class="method">
1196
+ <td>0.29%</td>
1197
+ <td>0.22%</td>
1198
+ <td>0.00</td>
1199
+ <td>0.00</td>
1200
+ <td>0.00</td>
1201
+ <td>0.00</td>
1202
+ <td>1</td>
1203
+ <td class="method_name">
1204
+ <a name="Hash_each_456">
1205
+ Hash#each
1206
+ </a>
1207
+ </td>
1208
+
1209
+
1210
+
1211
+ <td></td>
1212
+ </tr>
1213
+
1214
+
1215
+
1216
+ <!-- Children -->
1217
+
1218
+ <tr>
1219
+ <td>&nbsp;</td>
1220
+ <td>&nbsp;</td>
1221
+ <td>0.00</td>
1222
+ <td>0.00</td>
1223
+ <td>0.00</td>
1224
+ <td>0.00</td>
1225
+ <td>25/25</td>
1226
+ <td class="method_name"><a href="#Integer_-@_456">Integer#-@</a></td>
1227
+
1228
+ <td><a href="../example.rb" title="example.rb">19</a>
1229
+ </tr>
1230
+
1231
+
1232
+ <!-- Create divider row -->
1233
+ <tr class="break">
1234
+ <td colspan="10"></td>
1235
+ </tr>
1236
+
1237
+
1238
+ <!-- Parents -->
1239
+
1240
+ <tr>
1241
+ <td>&nbsp;</td>
1242
+ <td>&nbsp;</td>
1243
+ <td>0.00</td>
1244
+ <td>0.00</td>
1245
+ <td>0.00</td>
1246
+ <td>0.00</td>
1247
+ <td>25/25</td>
1248
+ <td class="method_name"><a href="#Hash_each_456">Hash#each</a></td>
1249
+
1250
+ <td></td>
1251
+ </tr>
1252
+
1253
+ <tr class="method">
1254
+ <td>0.07%</td>
1255
+ <td>0.07%</td>
1256
+ <td>0.00</td>
1257
+ <td>0.00</td>
1258
+ <td>0.00</td>
1259
+ <td>0.00</td>
1260
+ <td>25</td>
1261
+ <td class="method_name">
1262
+ <a name="Integer_-@_456">
1263
+ Integer#-@
1264
+ </a>
1265
+ </td>
1266
+
1267
+
1268
+
1269
+ <td><a href="#" title="internal">104</a></td>
1270
+ </tr>
1271
+
1272
+
1273
+
1274
+ <!-- Children -->
1275
+
1276
+
1277
+ <!-- Create divider row -->
1278
+ <tr class="break">
1279
+ <td colspan="10"></td>
1280
+ </tr>
1281
+
1282
+ </tbody>
1283
+ <tfoot>
1284
+ <tr>
1285
+ <td colspan="9">* indicates recursively called methods</td>
1286
+ </tr>
1287
+ </tfoot>
1288
+ </table>
1289
+
1290
+ </div>
1291
+
1292
+ <script type="application/javascript">
1293
+ function toggleAllocations(element)
1294
+ {
1295
+ if (element.style.display == 'none')
1296
+ element.style.display = 'block'
1297
+ else
1298
+ element.style.display = 'none'
1299
+ }
1300
+
1301
+ function onClick(event)
1302
+ {
1303
+ if (event.target.tagName == 'A' && event.target.classList.contains('allocations'))
1304
+ {
1305
+ var url = new URL(event.target.href)
1306
+ var element = document.querySelector(url.hash)
1307
+ toggleAllocations(element)
1308
+ event.preventDefault()
1309
+ }
1310
+ }
1311
+
1312
+ window.addEventListener('DOMContentLoaded', function(event)
1313
+ {
1314
+ document.addEventListener('click', onClick)
1315
+ })
1316
+
1317
+ </script>
1318
+ </body>
1319
+ </html>