(s)
| 410 | } |
| 411 | |
| 412 | function escapeHtml(s) { |
| 413 | return String(s).replace( |
| 414 | /[&<>"']/g, |
| 415 | (m) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[m] |
| 416 | ); |
| 417 | } |
| 418 | |
| 419 | function gmRequest(details, { abortAfterMs } = {}) { |
| 420 | return new Promise((resolve, reject) => { |