@zentered/issue-forms-body-parser 1.4.1 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }
package/dist/parse.esm.js DELETED
@@ -1,323 +0,0 @@
1
- import t from '@actions/github'
2
- import n from '@actions/core'
3
- import { unified as e } from 'unified'
4
- import r from 'remark-parse'
5
- import i from 'remark-gfm'
6
- import o from '@sindresorhus/slugify'
7
- import u from 'remark-stringify'
8
- import a from 'strip-final-newline'
9
- import { isMatch as f, parse as c } from 'date-fns'
10
- import { zonedTimeToUtc as h, formatInTimeZone as s } from 'date-fns-tz/esm'
11
- function l(t, n) {
12
- ;(null == n || n > t.length) && (n = t.length)
13
- for (var e = 0, r = new Array(n); e < n; e++) r[e] = t[e]
14
- return r
15
- }
16
- var d = [
17
- 'yyyy-MM-dd',
18
- 'dd/MM/yyyy',
19
- 'dd/MM/yy',
20
- 'dd-MM-yyyy',
21
- 'dd-MM-yy',
22
- 'dd.MM.yyyy',
23
- 'dd.MM.yy'
24
- ],
25
- m = ['HH:mm', 'HH.mm', 'hh:mm a', 'hh:mm A'],
26
- y = function t(n) {
27
- return n.children
28
- .map(function (e) {
29
- var r = {}
30
- return 'list' === e.type
31
- ? t(n)
32
- : 'listItem' === e.type
33
- ? ((r.checked = e.checked),
34
- e.children
35
- .map(function (t) {
36
- if ('paragraph' === t.type)
37
- return (
38
- (r.text = t.children
39
- .map(function (t) {
40
- return 'link' === t.type ? t.children[0].value : t.value
41
- })
42
- .filter(function (t) {
43
- return !!t
44
- })
45
- .join('')),
46
- r
47
- )
48
- })
49
- .filter(function (t) {
50
- return !!t
51
- }))
52
- : void 0
53
- })
54
- .filter(function (t) {
55
- return !!t
56
- })
57
- }
58
- function v(t, n, e) {
59
- if (!t.s) {
60
- if (e instanceof p) {
61
- if (!e.s) return void (e.o = v.bind(null, t, n))
62
- 1 & n && (n = e.s), (e = e.v)
63
- }
64
- if (e && e.then) return void e.then(v.bind(null, t, n), v.bind(null, t, 2))
65
- ;(t.s = n), (t.v = e)
66
- var r = t.o
67
- r && r(t)
68
- }
69
- }
70
- const p = /*#__PURE__*/ (function () {
71
- function t() {}
72
- return (
73
- (t.prototype.then = function (n, e) {
74
- const r = new t(),
75
- i = this.s
76
- if (i) {
77
- const t = 1 & i ? n : e
78
- if (t) {
79
- try {
80
- v(r, 1, t(this.v))
81
- } catch (t) {
82
- v(r, 2, t)
83
- }
84
- return r
85
- }
86
- return this
87
- }
88
- return (
89
- (this.o = function (t) {
90
- try {
91
- const i = t.v
92
- 1 & t.s ? v(r, 1, n ? n(i) : i) : e ? v(r, 1, e(i)) : v(r, 2, i)
93
- } catch (t) {
94
- v(r, 2, t)
95
- }
96
- }),
97
- r
98
- )
99
- }),
100
- t
101
- )
102
- })()
103
- function g(t) {
104
- return t instanceof p && 1 & t.s
105
- }
106
- !(function () {
107
- try {
108
- n.info('Parsing issue body ...')
109
- var b = (function (b, M) {
110
- try {
111
- var x = Promise.resolve(
112
- (function (t) {
113
- try {
114
- var n, b, M, x, w, k, O, j, A, I, P, H, S
115
- return Promise.resolve(e().use(r).use(i).parse(t)).then(function (
116
- t
117
- ) {
118
- function r() {
119
- for (P in T)
120
- (S = (H = T[P]).content.filter(Boolean)) &&
121
- S.length > 0 &&
122
- (1 === S.length && (H.text = S[0]),
123
- (H.text = S.join('\n\n'))),
124
- (H.content = S)
125
- return T
126
- }
127
- if (!t) return []
128
- var T = {},
129
- C = null
130
- n = (function (t, n) {
131
- var e =
132
- ('undefined' != typeof Symbol && t[Symbol.iterator]) ||
133
- t['@@iterator']
134
- if (e) return (e = e.call(t)).next.bind(e)
135
- if (
136
- Array.isArray(t) ||
137
- (e = (function (t, n) {
138
- if (t) {
139
- if ('string' == typeof t) return l(t, n)
140
- var e = Object.prototype.toString.call(t).slice(8, -1)
141
- return (
142
- 'Object' === e &&
143
- t.constructor &&
144
- (e = t.constructor.name),
145
- 'Map' === e || 'Set' === e
146
- ? Array.from(t)
147
- : 'Arguments' === e ||
148
- /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)
149
- ? l(t, n)
150
- : void 0
151
- )
152
- }
153
- })(t))
154
- ) {
155
- e && (t = e)
156
- var r = 0
157
- return function () {
158
- return r >= t.length
159
- ? { done: !0 }
160
- : { done: !1, value: t[r++] }
161
- }
162
- }
163
- throw new TypeError(
164
- 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
165
- )
166
- })(t.children)
167
- var U = (function (t, n, e) {
168
- for (var r; ; ) {
169
- var i = t()
170
- if ((g(i) && (i = i.v), !i)) return o
171
- if (i.then) {
172
- r = 0
173
- break
174
- }
175
- var o = e()
176
- if (o && o.then) {
177
- if (!g(o)) {
178
- r = 1
179
- break
180
- }
181
- o = o.s
182
- }
183
- }
184
- var u = new p(),
185
- a = v.bind(null, u, 2)
186
- return (
187
- (0 === r
188
- ? i.then(c)
189
- : 1 === r
190
- ? o.then(f)
191
- : (void 0).then(function () {
192
- ;(i = t())
193
- ? i.then
194
- ? i.then(c).then(void 0, a)
195
- : c(i)
196
- : v(u, 1, o)
197
- })
198
- ).then(void 0, a),
199
- u
200
- )
201
- function f(n) {
202
- o = n
203
- do {
204
- if (!(i = t()) || (g(i) && !i.v)) return void v(u, 1, o)
205
- if (i.then) return void i.then(c).then(void 0, a)
206
- g((o = e())) && (o = o.v)
207
- } while (!o || !o.then)
208
- o.then(f).then(void 0, a)
209
- }
210
- function c(t) {
211
- t
212
- ? (o = e()) && o.then
213
- ? o.then(f).then(void 0, a)
214
- : f(o)
215
- : v(u, 1, o)
216
- }
217
- })(
218
- function () {
219
- return !(b = n()).done
220
- },
221
- 0,
222
- function () {
223
- return (
224
- (M = b.value),
225
- Promise.resolve(e().use(i).use(u).stringify(M)).then(
226
- function (t) {
227
- var n, e
228
- ;(x = a(t)),
229
- 'heading' === M.type && 3 === M.depth
230
- ? ((C = o(M.children[0].value)),
231
- (T[C] = {
232
- title: M.children[0].value,
233
- content: []
234
- }))
235
- : 'paragraph' === M.type && C
236
- ? ((w = T[C]),
237
- (n = x),
238
- (e = d.map(function (t) {
239
- return f(n, t)
240
- })),
241
- (k =
242
- e.indexOf(!0) > -1
243
- ? h(
244
- c(n, d[e.indexOf(!0)], new Date()),
245
- 'UTC'
246
- )
247
- .toJSON()
248
- .split('T')[0]
249
- : null),
250
- (O = (function (t) {
251
- var n = m.map(function (n) {
252
- return f(t, n)
253
- })
254
- if (n.indexOf(!0) > -1) {
255
- var e = h(
256
- c(t, m[n.indexOf(!0)], new Date()),
257
- 'UTC'
258
- )
259
- return s(e, 'UTC', 'HH:mm')
260
- }
261
- return null
262
- })(x)),
263
- (j = (function (t) {
264
- var n = !1,
265
- e = { hours: 0, minutes: 0 },
266
- r = new RegExp(/([0-9]+)h([0-9]+)m/),
267
- i = new RegExp(/([0-9]+)h/)
268
- if (t.match(r)) {
269
- n = !0
270
- var o = t.match(r),
271
- u = o[2]
272
- ;(e.hours = parseInt(o[1])),
273
- (e.minutes = parseInt(u))
274
- } else if (t.match(i)) {
275
- n = !0
276
- var a = t.match(i)
277
- ;(e.hours = parseInt(a[1])), (e.minutes = 0)
278
- }
279
- return n ? e : null
280
- })(x)),
281
- k && (w.date = k),
282
- O && (w.time = O),
283
- j && (w.duration = j),
284
- w.content.push(x))
285
- : 'list' === M.type
286
- ? (((A = T[C]).text = x), (A.list = y(M).flat()))
287
- : 'html' === M.type
288
- ? T[C].content.push(M.html)
289
- : 'code' === M.type
290
- ? (((I = T[C]).lang = M.lang), (I.text = x))
291
- : 'heading' === M.type && M.depth > 3
292
- ? T[C].content.push(M.children[0].value)
293
- : (console.log('unhandled token type'),
294
- console.log(M))
295
- }
296
- )
297
- )
298
- }
299
- )
300
- return U && U.then ? U.then(r) : r()
301
- })
302
- } catch (t) {
303
- return Promise.reject(t)
304
- }
305
- })(t.context.payload.issue.body)
306
- ).then(function (t) {
307
- void 0 !== t
308
- ? n.setOutput('data', t)
309
- : n.setFailed('There was no valid payload found in the issue.')
310
- })
311
- } catch (t) {
312
- return M(t)
313
- }
314
- return x && x.then ? x.then(void 0, M) : x
315
- })(0, function (t) {
316
- n.setFailed(t)
317
- })
318
- Promise.resolve(b && b.then ? b.then(function () {}) : void 0)
319
- } catch (t) {
320
- return Promise.reject(t)
321
- }
322
- })()
323
- //# sourceMappingURL=parse.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.esm.js","sources":["../src/parsers/date.js","../src/parsers/time.js","../src/parsers/index.js","../src/parsers/list.js","../src/parse.js","../src/index.js","../src/parsers/duration.js"],"sourcesContent":["'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc } from 'date-fns-tz/esm'\n\nconst loc = 'UTC'\nconst commonDateFormats = [\n 'yyyy-MM-dd',\n 'dd/MM/yyyy',\n 'dd/MM/yy',\n 'dd-MM-yyyy',\n 'dd-MM-yy',\n 'dd.MM.yyyy',\n 'dd.MM.yy'\n]\n\nexport default function parseDate(text) {\n const match = commonDateFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const date = zonedTimeToUtc(\n parse(text, commonDateFormats[match.indexOf(true)], new Date()),\n loc\n ).toJSON()\n return date.split('T')[0]\n } else {\n return null\n }\n}\n","'use strict'\n\nimport { parse, isMatch } from 'date-fns'\nimport { zonedTimeToUtc, formatInTimeZone } from 'date-fns-tz/esm'\n\nconst loc = 'UTC'\nconst commonTimeFormats = ['HH:mm', 'HH.mm', 'hh:mm a', 'hh:mm A']\n\nexport default function parseTime(text) {\n const match = commonTimeFormats.map((format) => {\n return isMatch(text, format)\n })\n if (match.indexOf(true) > -1) {\n const time = zonedTimeToUtc(\n parse(text, commonTimeFormats[match.indexOf(true)], new Date()),\n loc\n )\n return formatInTimeZone(time, loc, 'HH:mm')\n } else {\n return null\n }\n}\n","'use strict'\n\nimport date from './date.js'\nimport time from './time.js'\nimport duration from './duration.js'\nimport list from './list.js'\n\nexport const parseDate = date\nexport const parseTime = time\nexport const parseDuration = duration\nexport const parseList = list\n","'use strict'\n\nexport default function parseList(list) {\n return list.children\n .map((item) => {\n const listItem = {}\n if (item.type === 'list') {\n return parseList(list)\n } else if (item.type === 'listItem') {\n listItem.checked = item.checked\n return item.children\n .map((child) => {\n if (child.type === 'paragraph') {\n listItem.text = child.children\n .map((c) => {\n if (c.type === 'link') {\n return c.children[0].value\n } else {\n return c.value\n }\n })\n .filter((x) => !!x)\n .join('')\n return listItem\n }\n })\n .filter((x) => !!x)\n }\n })\n .filter((x) => !!x)\n}\n","'use strict'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkGfm from 'remark-gfm'\nimport slugify from '@sindresorhus/slugify'\nimport remarkStringify from 'remark-stringify'\nimport stripFinalNewline from 'strip-final-newline'\n\nimport {\n parseDate,\n parseTime,\n parseDuration,\n parseList\n} from './parsers/index.js'\n\nexport default async function parseMD(body) {\n const tokens = await unified().use(remarkParse).use(remarkGfm).parse(body)\n if (!tokens) {\n return []\n }\n\n const structuredResponse = {}\n let currentHeading = null\n for (const token of tokens.children) {\n const text = await unified()\n .use(remarkGfm)\n .use(remarkStringify)\n .stringify(token)\n const cleanText = stripFinalNewline(text)\n\n // issue forms uses h3 as a heading\n if (token.type === 'heading' && token.depth === 3) {\n currentHeading = slugify(token.children[0].value)\n structuredResponse[currentHeading] = {\n title: token.children[0].value,\n content: []\n }\n } else if (token.type === 'paragraph' && currentHeading) {\n const obj = structuredResponse[currentHeading]\n\n const date = parseDate(cleanText)\n const time = parseTime(cleanText)\n const duration = parseDuration(cleanText)\n\n if (date) {\n obj.date = date\n }\n\n if (time) {\n obj.time = time\n }\n\n if (duration) {\n obj.duration = duration\n }\n\n obj.content.push(cleanText)\n } else if (token.type === 'list') {\n const obj = structuredResponse[currentHeading]\n obj.text = cleanText\n obj.list = parseList(token).flat()\n } else if (token.type === 'html') {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.html)\n } else if (token.type === 'code') {\n const obj = structuredResponse[currentHeading]\n obj.lang = token.lang\n obj.text = cleanText\n } else if (token.type === 'heading' && token.depth > 3) {\n const obj = structuredResponse[currentHeading]\n obj.content.push(token.children[0].value)\n } else {\n console.log('unhandled token type')\n console.log(token)\n }\n }\n\n for (const key in structuredResponse) {\n const token = structuredResponse[key]\n const content = token.content.filter(Boolean)\n if (content && content.length > 0) {\n if (content.length === 1) {\n token.text = content[0]\n }\n token.text = content.join('\\n\\n')\n }\n token.content = content\n }\n\n return structuredResponse\n}\n","'use strict'\n\nimport github from '@actions/github'\nimport core from '@actions/core'\nimport parse from './parse.js'\n\nasync function run() {\n core.info('Parsing issue body ...')\n\n try {\n const parsedContent = await parse(github.context.payload.issue.body)\n\n if (parsedContent !== undefined) {\n core.setOutput('data', parsedContent)\n } else {\n core.setFailed(`There was no valid payload found in the issue.`)\n }\n } catch (err) {\n core.setFailed(err)\n }\n}\n\nrun()\n","'use strict'\n\nexport default function parseDuration(text) {\n let matched = false\n const duration = {\n hours: 0,\n minutes: 0\n }\n\n const hoursAndMinutes = new RegExp(/([0-9]+)h([0-9]+)m/)\n const hours = new RegExp(/([0-9]+)h/)\n\n if (text.match(hoursAndMinutes)) {\n matched = true\n const [, h, m] = text.match(hoursAndMinutes)\n duration.hours = parseInt(h)\n duration.minutes = parseInt(m)\n } else if (text.match(hours)) {\n matched = true\n const [, h] = text.match(hours)\n duration.hours = parseInt(h)\n duration.minutes = 0\n }\n\n if (matched) {\n return duration\n } else {\n return null\n }\n}\n"],"names":["commonDateFormats","commonTimeFormats","parseList","list","children","map","item","listItem","type","checked","child","text","c","value","filter","x","join","_settle","pact","state","s","_Pact","o","bind","v","then","observer","prototype","onFulfilled","onRejected","result","this","callback","e","_this","thenable","core","info","_temp2","body","recover","parse","token","cleanText","obj","date","time","duration","key","content","unified","use","remarkParse","remarkGfm","tokens","structuredResponse","Boolean","length","currentHeading","_iterator","test","update","stage","shouldContinue","_isSettledPact","reject","_resumeAfterTest","_resumeAfterBody","updateValue","remarkStringify","stringify","match","stripFinalNewline","depth","slugify","title","format","isMatch","indexOf","zonedTimeToUtc","Date","toJSON","split","parseTime","formatInTimeZone","matched","hours","minutes","hoursAndMinutes","RegExp","_text$match","m","parseInt","parseDuration","push","flat","html","lang","console","log","_temp","github","context","payload","issue","parsedContent","undefined","setOutput","setFailed","_catch","err","Promise","resolve","run"],"mappings":"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"}
package/test/issue.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "action": "opened",
3
- "issue": {
4
- "body": "### List Item Checked\n\n* [x] I agree to follow this project's\n [Code of Conduct](https://berlincodeofconduct.org)\n"
5
- }
6
- }
@@ -1,104 +0,0 @@
1
- 'use strict'
2
-
3
- import t from 'tap'
4
- import fn from '../src/parse.js'
5
- import { readFile } from 'fs/promises'
6
- import { join } from 'path'
7
-
8
- const test = t.test
9
-
10
- test('parse(md) should parse GitHub Issue Form data into useful, structured data', async (t) => {
11
- const expected = {
12
- 'event-description': {
13
- title: 'Event Description',
14
- content: [
15
- 'Welcome to the CDC - Cyprus Developer Community! Join us for our monthly Larnaka\nmeet & greet event. Meet likeminded people, discuss topics we would like to hear\nabout in upcoming talks, welcome potential speakers, discuss all things tech and\nhave fun!',
16
- 'Notice with regards to COVID:',
17
- 'All attendees must follow measures in accordance with Ministry of Health\ndirectives. <https://www.pio.gov.cy/coronavirus/eng>'
18
- ],
19
- text: 'Welcome to the CDC - Cyprus Developer Community! Join us for our monthly Larnaka\nmeet & greet event. Meet likeminded people, discuss topics we would like to hear\nabout in upcoming talks, welcome potential speakers, discuss all things tech and\nhave fun!\n\nNotice with regards to COVID:\n\nAll attendees must follow measures in accordance with Ministry of Health\ndirectives. <https://www.pio.gov.cy/coronavirus/eng>'
20
- },
21
- location: {
22
- title: 'Location',
23
- content: [
24
- '[Cafe Nero Finikoudes, Larnaka](https://goo.gl/maps/Bzjxdeat3BSdsUSVA)'
25
- ],
26
- text: '[Cafe Nero Finikoudes, Larnaka](https://goo.gl/maps/Bzjxdeat3BSdsUSVA)'
27
- },
28
- date: {
29
- title: 'Date',
30
- content: ['11.03.2022'],
31
- date: '2022-03-11',
32
- text: '11.03.2022'
33
- },
34
- time: { title: 'Time', content: ['16:00'], time: '16:00', text: '16:00' },
35
- duration: {
36
- title: 'Duration',
37
- content: ['2h'],
38
- duration: { hours: 2, minutes: 0 },
39
- text: '2h'
40
- },
41
- 'list-item-checked': {
42
- title: 'List Item Checked',
43
- content: [],
44
- text: "* [x] I agree to follow this project's\n [Code of Conduct](https://berlincodeofconduct.org)",
45
- list: [
46
- {
47
- checked: true,
48
- text: "I agree to follow this project's\nCode of Conduct"
49
- }
50
- ]
51
- },
52
- 'list-item-unchecked': {
53
- title: 'List Item Unchecked',
54
- content: [],
55
- text: "* [ ] I agree to follow this project's\n [Code of Conduct](https://berlincodeofconduct.org)",
56
- list: [
57
- {
58
- checked: false,
59
- text: "I agree to follow this project's\nCode of Conduct"
60
- }
61
- ]
62
- },
63
- 'mixed-task-list': {
64
- title: 'Mixed Task List',
65
- content: [],
66
- text: '* [x] checked\n* [ ] unchecked\n* [x] checked 2\n* [x] checked 3\n* [ ] unchecked 2',
67
- list: [
68
- { checked: true, text: 'checked' },
69
- { checked: false, text: 'unchecked' },
70
- { checked: true, text: 'checked 2' },
71
- { checked: true, text: 'checked 3' },
72
- { checked: false, text: 'unchecked 2' }
73
- ]
74
- },
75
- repositories: {
76
- title: 'Repositories',
77
- content: [],
78
- lang: 'csv',
79
- text: '```csv\nhttps://example.com/repository-1\nhttps://example.com/repository-2\n```'
80
- },
81
- visibility: { title: 'Visibility', content: ['Internal'], text: 'Internal' }
82
- }
83
-
84
- const md = await readFile(
85
- join(process.cwd(), 'test', 'test-issue-1.md'),
86
- 'utf8'
87
- )
88
- const actual = await fn(md)
89
- // console.log(JSON.stringify(actual, null, 0))
90
-
91
- t.same(actual, expected)
92
- })
93
-
94
- test('parse(md) return nothing', async (t) => {
95
- const expected = {}
96
-
97
- const md = await readFile(
98
- join(process.cwd(), 'test', 'test-issue-2.md'),
99
- 'utf8'
100
- )
101
- const actual = await fn(md)
102
- // console.log(JSON.stringify(actual, null, 0))
103
- t.same(actual, expected)
104
- })
@@ -1,58 +0,0 @@
1
- ### Event Description
2
-
3
- <img width="1107" alt="The Brewery Larnaka" src="https://user-images.githubusercontent.com/3581331/162574191-3c023b32-34d9-4035-90bf-7297cdccaf06.png">
4
-
5
- Welcome to the CDC - Cyprus Developer Community! Join us for our monthly Larnaka
6
- meet & greet event. Meet likeminded people, discuss topics we would like to hear
7
- about in upcoming talks, welcome potential speakers, discuss all things tech and
8
- have fun!
9
-
10
- #### Notice with regards to COVID:
11
-
12
- All attendees must follow measures in accordance with Ministry of Health
13
- directives. https://www.pio.gov.cy/coronavirus/eng
14
-
15
- ### Location
16
-
17
- [Cafe Nero Finikoudes, Larnaka](https://goo.gl/maps/Bzjxdeat3BSdsUSVA)
18
-
19
- ### Date
20
-
21
- 11.03.2022
22
-
23
- ### Time
24
-
25
- 16:00
26
-
27
- ### Duration
28
-
29
- 2h
30
-
31
- ### List Item Checked
32
-
33
- - [x] I agree to follow this project's
34
- [Code of Conduct](https://berlincodeofconduct.org)
35
-
36
- ### List Item Unchecked
37
-
38
- - [ ] I agree to follow this project's
39
- [Code of Conduct](https://berlincodeofconduct.org)
40
-
41
- ### Mixed Task List
42
-
43
- - [x] checked
44
- - [ ] unchecked
45
- - [x] checked 2
46
- - [x] checked 3
47
- - [ ] unchecked 2
48
-
49
- ### Repositories
50
-
51
- ```csv
52
- https://example.com/repository-1
53
- https://example.com/repository-2
54
- ```
55
-
56
- ### Visibility
57
-
58
- Internal
@@ -1,10 +0,0 @@
1
- ---
2
- startDate: 10.03.2022
3
- startTime: 10.00
4
- duration: 1h
5
- location: online
6
- ---
7
-
8
- Let's chat about tech, coding and Cyprus.
9
-
10
- https://discord.gg/qA7wHjbs?event=948887583507755048