@kernhq/module-hr 0.18.1 → 0.20.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 (50) hide show
  1. package/dist/contract/capabilities.d.ts.map +1 -1
  2. package/dist/contract/capabilities.js +45 -0
  3. package/dist/contract/capabilities.js.map +1 -1
  4. package/dist/contract/exports.d.ts +459 -0
  5. package/dist/contract/exports.d.ts.map +1 -0
  6. package/dist/contract/exports.js +331 -0
  7. package/dist/contract/exports.js.map +1 -0
  8. package/dist/contract/index.d.ts +2 -0
  9. package/dist/contract/index.d.ts.map +1 -1
  10. package/dist/contract/index.js +2 -0
  11. package/dist/contract/index.js.map +1 -1
  12. package/dist/contract/permissions.d.ts +10 -2
  13. package/dist/contract/permissions.d.ts.map +1 -1
  14. package/dist/contract/permissions.js +44 -5
  15. package/dist/contract/permissions.js.map +1 -1
  16. package/dist/contract/rosters.d.ts +183 -0
  17. package/dist/contract/rosters.d.ts.map +1 -0
  18. package/dist/contract/rosters.js +138 -0
  19. package/dist/contract/rosters.js.map +1 -0
  20. package/dist/contract/router.d.ts +893 -0
  21. package/dist/contract/router.d.ts.map +1 -1
  22. package/dist/contract/router.js +220 -1
  23. package/dist/contract/router.js.map +1 -1
  24. package/dist/server/router.d.ts +1210 -0
  25. package/dist/server/router.d.ts.map +1 -1
  26. package/dist/server/router.js +578 -1
  27. package/dist/server/router.js.map +1 -1
  28. package/dist/server/schema.d.ts +727 -1
  29. package/dist/server/schema.d.ts.map +1 -1
  30. package/dist/server/schema.js +105 -0
  31. package/dist/server/schema.js.map +1 -1
  32. package/dist/server/services/exports.d.ts +321 -0
  33. package/dist/server/services/exports.d.ts.map +1 -0
  34. package/dist/server/services/exports.js +765 -0
  35. package/dist/server/services/exports.js.map +1 -0
  36. package/dist/server/services/rosters.d.ts +166 -0
  37. package/dist/server/services/rosters.d.ts.map +1 -0
  38. package/dist/server/services/rosters.js +268 -0
  39. package/dist/server/services/rosters.js.map +1 -0
  40. package/migrations/0012_rosters.sql +163 -0
  41. package/migrations/meta/0012_snapshot.json +4847 -0
  42. package/migrations/meta/_journal.json +7 -0
  43. package/package.json +1 -1
  44. package/src/client/messages.ts +13 -0
  45. package/src/contract/capabilities.ts +45 -0
  46. package/src/contract/exports.ts +354 -0
  47. package/src/contract/index.ts +2 -0
  48. package/src/contract/permissions.ts +47 -5
  49. package/src/contract/rosters.ts +156 -0
  50. package/src/contract/router.ts +256 -0
@@ -0,0 +1,331 @@
1
+ import { Timestamp } from '@kernhq/contracts';
2
+ import { z } from 'zod';
3
+ import { LeaveUnit } from './leave.js';
4
+ import { IsoDate } from './models.js';
5
+ import { ReportFinality, ReportScope } from './reports.js';
6
+ /**
7
+ * The payroll handover, and the four rules that make it safe to hand over.
8
+ *
9
+ * Kern does not compute pay. This file carries identity, the period, the employment facts that let a
10
+ * provider pick a rate, and quantities — minutes and days. There is no gross, no net, no hourly rate,
11
+ * no deduction and no currency amount anywhere in it; the moment a column reads as money, Kern is a
12
+ * payroll system and owes the accuracy of one. `OvertimeConfig.rate` says the same thing one file
13
+ * over: a multiplier is a fact about a policy, and multiplying anything by it is somebody else's job.
14
+ *
15
+ * **1. Per legal entity, keyed by (entity, period, person).** A person who transfers mid-period
16
+ * produces two rows, one in each entity's file, each carrying only that entity's days. Two entities
17
+ * in one workspace are two filings, in two currencies, to two authorities, on two closing days —
18
+ * `periods.legal_entity_id` exists for exactly that reason and `PolicyService.isLocked` already
19
+ * answers per entity. So `legalEntityId` is a **required** input rather than an optional slice: there
20
+ * is no "export everything", because that is an invitation to send one provider another entity's
21
+ * people.
22
+ *
23
+ * **2. Two files, not one.** `hours.csv` has a fixed column set. `leave.csv` is long-form — one row
24
+ * per person per leave type — because leave types are workspace data (`leave_types` is keyed on
25
+ * `(workspace_id, key)`), so a wide file with a column per type would have a column set that depends
26
+ * on the customer's own rows, and a column set that depends on customer data cannot be frozen.
27
+ *
28
+ * **3. Frozen, and the version travels in four places.** See {@link PAYROLL_EXPORT_CONTRACT}.
29
+ *
30
+ * **4. Refuse rather than guess.** An open period, an entity with nobody in it, or a person with no
31
+ * employment row covering their days is a refusal with a sentence, never a row of zeros a payroll
32
+ * clerk will pay from. The one escape hatch is `draft`, and a draft stamps itself — in the manifest,
33
+ * in the filename, and in every row's `open_days`.
34
+ */
35
+ /**
36
+ * The contract identity, and **not** the package version.
37
+ *
38
+ * `@kernhq/module-hr` bumps on every patch and every image in an instance carries one
39
+ * `KERN_VERSION`; the CSV shape has to move on its own axis, so this is a hardcoded literal rather
40
+ * than `packageVersion(import.meta.url)`. `kernVersion` sits in the manifest as provenance and is
41
+ * never the contract identity.
42
+ *
43
+ * It travels in four places, each doing a different job:
44
+ *
45
+ * 1. **The procedure and its route** — `payroll.export.v1`, `GET /payroll/export/v1`. A new shape is
46
+ * a new procedure, never a parameter on this one: freezing a branch inside a function three people
47
+ * will edit has never worked, and separate procedures are what make the freeze structural.
48
+ * 2. **The filename** — `kern-payroll-v1_<entity>_2026-06_hours.csv`. The only part that survives
49
+ * being emailed to a bureau and opened by somebody who never saw the API.
50
+ * 3. **The manifest** — `contract: 'kern-payroll-v1'` beside `generatedAt`, `kernVersion` and the
51
+ * report header triple.
52
+ * 4. **Every row**, as the first column. A manifest can be separated from its CSVs and a filename can
53
+ * be changed on the way to a payroll system; a file that has lost both must still be able to say
54
+ * what shape it is. This is a column in the frozen set, **not** a banner row above the header —
55
+ * a version line above the column names breaks every importer that assumes row 1 is the header,
56
+ * which is most of them and all of the spreadsheet ones.
57
+ *
58
+ * What "frozen" forbids, once v1 has shipped: no new column, not even appended at the end; no removed
59
+ * or renamed column; no reordering; no changed emptiness semantics (`beyond_cap_minutes` empty means
60
+ * "no ceiling was in force" and must never start meaning zero); no changed units, so minutes stay
61
+ * minutes and `dayLengthMinutes` stays 480 even if this module later grows a per-workspace working
62
+ * day; and no changed encoding, delimiter, line ending or quoting. A later column is
63
+ * `payroll.export.v2` — a new procedure, a new filename prefix, a new manifest `contract` — shipping
64
+ * alongside v1 with v1 untouched. That is expensive on purpose: the expense is what stops the column
65
+ * set drifting, and a contract nobody pays to change is not frozen.
66
+ */
67
+ export const PAYROLL_EXPORT_CONTRACT = 'kern-payroll-v1';
68
+ /**
69
+ * `hours.csv`, in order. **This array is the file format.**
70
+ *
71
+ * Every column exists in the schema today. The quantities come from `attendance_days` and never from
72
+ * `punches`: punches are append-only and a voided punch survives beside its correction, so summing
73
+ * them double-counts every fix ever made. The day sheet is the projection that has already applied
74
+ * the schedule, the calendar and the rounding.
75
+ *
76
+ * Three of these carry a decision rather than a number:
77
+ *
78
+ * - `beyond_cap_minutes` is **empty, never `0`**, where no statutory ceiling was in force. Zero means
79
+ * a ceiling applied and nothing exceeded it. A provider reading 0 for empty is the one place this
80
+ * export can cause a wrong payment, which is why `capped_days` and `uncapped_days` sit beside it.
81
+ * - `scheduled_worked_minutes` excludes work on unrostered days, because a numerator that includes
82
+ * them over a denominator that excludes them is how a team that turned up exactly as asked reads
83
+ * 121%.
84
+ * - `employment_changed_in_period` is true when more than one employment row overlaps the period.
85
+ * Without it the export hands over the end-state FTE for somebody who went 1.0 → 0.6 on the 15th,
86
+ * and the provider pays the whole month at one of them.
87
+ */
88
+ export const PAYROLL_HOURS_COLUMNS = [
89
+ 'contract',
90
+ 'legal_entity_id',
91
+ 'legal_entity_name',
92
+ 'period_start',
93
+ 'period_end',
94
+ 'person_id',
95
+ 'employee_no',
96
+ 'display_name',
97
+ 'employment_type',
98
+ 'fte',
99
+ 'contract_hours_week',
100
+ 'cost_center_code',
101
+ 'position_title',
102
+ 'hired_on',
103
+ 'terminated_on',
104
+ 'employment_changed_in_period',
105
+ 'day_sheets',
106
+ 'scheduled_minutes',
107
+ 'worked_minutes',
108
+ 'scheduled_worked_minutes',
109
+ 'break_minutes',
110
+ 'overtime_minutes',
111
+ 'late_minutes',
112
+ 'early_leave_minutes',
113
+ 'beyond_cap_minutes',
114
+ 'capped_days',
115
+ 'uncapped_days',
116
+ 'locked_days',
117
+ 'open_days',
118
+ 'paid_leave_days',
119
+ 'unpaid_leave_days',
120
+ ];
121
+ /**
122
+ * `leave.csv`, in order. One row per (person, entity, period, leave type).
123
+ *
124
+ * Built from `leave_request_days` filtered `counted and status = 'approved'`, joined out to
125
+ * `leave_requests` → `leave_types`. **Not** `leave_ledger`: the ledger is the balance and carries
126
+ * `grant`, `accrual`, `carry_in` and `expiry`, which are movements rather than leave anybody took in
127
+ * this period. **Not** `leave_requests.minutes` summed per day either — that counts a five-day
128
+ * request five times, an off-by-a-factor this module has already been bitten by once.
129
+ *
130
+ * `days` sums `fraction`, which is exact and needs no day length. `dayLengthMinutes` is published in
131
+ * the manifest for anyone who wants to convert; this file does not convert for them.
132
+ */
133
+ export const PAYROLL_LEAVE_COLUMNS = [
134
+ 'contract',
135
+ 'legal_entity_id',
136
+ 'legal_entity_name',
137
+ 'period_start',
138
+ 'period_end',
139
+ 'person_id',
140
+ 'employee_no',
141
+ 'leave_type_key',
142
+ 'leave_type_name',
143
+ 'paid',
144
+ 'unit',
145
+ 'days',
146
+ 'requests',
147
+ ];
148
+ export const PayrollHoursRow = z.object({
149
+ personId: z.uuid(),
150
+ /**
151
+ * Unique per **workspace**, not per entity (`hr_people_ws_empno_uq`), and nullable.
152
+ *
153
+ * Exported, and deliberately not the key: a group whose Turkish and Dutch providers each want their
154
+ * own numbering has nowhere to put the second number today, and `HrSettings.employeeNumberPrefix`
155
+ * is one workspace-wide prefix. A per-entity number is a real schema change and it is not v1's job
156
+ * — but the file must not pretend the number it carries is the provider's.
157
+ */
158
+ employeeNo: z.string().nullable(),
159
+ /** Exactly as stored: an erased person keeps their row and carries the erasure token. */
160
+ displayName: z.string(),
161
+ employmentType: z.string(),
162
+ fte: z.number(),
163
+ contractHoursWeek: z.number().nullable(),
164
+ costCenterCode: z.string().nullable(),
165
+ positionTitle: z.string().nullable(),
166
+ /** A joiner or leaver mid-period is the case a provider prorates. */
167
+ hiredOn: IsoDate.nullable(),
168
+ terminatedOn: IsoDate.nullable(),
169
+ /** True when more than one employment row overlapped this person's days in this entity. */
170
+ employmentChangedInPeriod: z.boolean(),
171
+ /** The denominator. Publish it or no total means anything. */
172
+ daySheets: z.number().int(),
173
+ scheduledMinutes: z.number().int(),
174
+ workedMinutes: z.number().int(),
175
+ scheduledWorkedMinutes: z.number().int(),
176
+ breakMinutes: z.number().int(),
177
+ overtimeMinutes: z.number().int(),
178
+ lateMinutes: z.number().int(),
179
+ earlyLeaveMinutes: z.number().int(),
180
+ /** Null where no ceiling was in force — an **empty CSV field**, never zero. */
181
+ beyondCapMinutes: z.number().int().nullable(),
182
+ cappedDays: z.number().int(),
183
+ uncappedDays: z.number().int(),
184
+ /** A locked period can still hold an unlocked day, so both travel per row. */
185
+ lockedDays: z.number().int(),
186
+ openDays: z.number().int(),
187
+ paidLeaveDays: z.number(),
188
+ unpaidLeaveDays: z.number(),
189
+ });
190
+ export const PayrollLeaveRow = z.object({
191
+ personId: z.uuid(),
192
+ employeeNo: z.string().nullable(),
193
+ leaveTypeKey: z.string(),
194
+ leaveTypeName: z.string(),
195
+ paid: z.boolean(),
196
+ unit: LeaveUnit,
197
+ /** Days, summed from `fraction`. Never minutes: `MINUTES_PER_DAY` is a hardcoded eight hours. */
198
+ days: z.number(),
199
+ requests: z.number().int(),
200
+ });
201
+ /** The headline figures over the whole population, so a screen shows a total before a file exists. */
202
+ export const PayrollExportTotals = z.object({
203
+ people: z.number().int(),
204
+ daySheets: z.number().int(),
205
+ scheduledMinutes: z.number().int(),
206
+ workedMinutes: z.number().int(),
207
+ scheduledWorkedMinutes: z.number().int(),
208
+ breakMinutes: z.number().int(),
209
+ overtimeMinutes: z.number().int(),
210
+ lateMinutes: z.number().int(),
211
+ earlyLeaveMinutes: z.number().int(),
212
+ beyondCapMinutes: z.number().int().nullable(),
213
+ cappedDays: z.number().int(),
214
+ uncappedDays: z.number().int(),
215
+ lockedDays: z.number().int(),
216
+ openDays: z.number().int(),
217
+ paidLeaveDays: z.number(),
218
+ unpaidLeaveDays: z.number(),
219
+ });
220
+ /**
221
+ * Why this export will not be written.
222
+ *
223
+ * `payroll.export.preview` returns these so a screen can show them **before** anybody downloads
224
+ * anything; `payroll.export.v1` throws the first of them. `hr.period.not_locked` mirrors the spelling
225
+ * of `hr.period.locked`, which `PolicyService.assertOpen` throws pointed the other way.
226
+ */
227
+ export const PayrollExportRefusalCode = z.enum([
228
+ /** The period is open, and `draft` was not asked for. Tonight's `reconcile-days` may move it. */
229
+ 'hr.period.not_locked',
230
+ /** Nobody was employed by this entity on any day of the period. */
231
+ 'hr.payroll.empty',
232
+ /** Somebody in the population has no employment row covering their days here. */
233
+ 'hr.payroll.no_employment',
234
+ ]);
235
+ export const PayrollExportRefusal = z.object({
236
+ code: PayrollExportRefusalCode,
237
+ /** A sentence naming the fix, not a code a reader has to look up. */
238
+ message: z.string(),
239
+ /** Whose rows caused it, where that is a fact about people. Empty otherwise. */
240
+ personIds: z.array(z.uuid()),
241
+ });
242
+ /**
243
+ * How the bytes are written, restated in the manifest so a reader never has to infer it.
244
+ *
245
+ * UTF-8 **with a byte order mark**, because Excel on Windows mangles Turkish and Persian names
246
+ * without one and this module ships country packs for both. Comma, CRLF, RFC 4180 quoting, ISO dates,
247
+ * `.` decimal separator with two places on `fte` and on leave-day fractions. Every one of these is
248
+ * frozen for as long as v1 is published.
249
+ */
250
+ export const PayrollExportFormat = z.object({
251
+ encoding: z.literal('utf-8'),
252
+ byteOrderMark: z.literal(true),
253
+ delimiter: z.literal(','),
254
+ lineEnding: z.literal('crlf'),
255
+ quoting: z.literal('rfc4180'),
256
+ decimalSeparator: z.literal('.'),
257
+ decimalPlaces: z.literal(2),
258
+ dateFormat: z.literal('iso-8601'),
259
+ });
260
+ export const PayrollExportManifest = z.object({
261
+ contract: z.literal(PAYROLL_EXPORT_CONTRACT),
262
+ generatedAt: Timestamp,
263
+ /** Provenance — the platform version that wrote the file. Never the contract identity. */
264
+ kernVersion: z.string(),
265
+ /**
266
+ * `draft` when the caller asked for an open period, `final` otherwise.
267
+ *
268
+ * Not a warning in a toast: the toast does not travel with the CSV, and the CSV is what reaches the
269
+ * provider. So the filename says `DRAFT` too, and every row carries a non-zero `open_days`.
270
+ */
271
+ finality: z.enum(['final', 'draft']),
272
+ draft: z.boolean(),
273
+ legalEntityId: z.uuid(),
274
+ legalEntityName: z.string(),
275
+ /** The fields a filing is made under, so the file states which authority it belongs to. */
276
+ country: z.string(),
277
+ currency: z.string().nullable(),
278
+ periodId: z.uuid(),
279
+ periodStart: IsoDate,
280
+ periodEnd: IsoDate,
281
+ periodStatus: z.enum(['open', 'locked']),
282
+ /** Everybody the entity employed over the period — the denominator, and never omitted. */
283
+ population: z.number().int(),
284
+ /** How many of them have a day sheet or an approved leave day behind the figures. */
285
+ counted: z.number().int(),
286
+ /** Which grants produced this population. Two managers must not read one title over two sets. */
287
+ scope: ReportScope,
288
+ /** Locked against open day sheets. A locked period can still contain an unlocked day. */
289
+ attendance: ReportFinality,
290
+ /** 480. Published so a reader converting days to minutes uses the module's day, not their own. */
291
+ dayLengthMinutes: z.number().int(),
292
+ format: PayrollExportFormat,
293
+ files: z.array(z.object({ name: z.string(), columns: z.array(z.string()), rows: z.number().int() })),
294
+ });
295
+ export const PayrollExportFile = z.object({
296
+ name: z.string(),
297
+ contentType: z.string(),
298
+ /** The whole file as text. The CSVs begin with a byte order mark and end every line with CRLF. */
299
+ content: z.string(),
300
+ });
301
+ /**
302
+ * What `payroll.export.v1` hands back: the manifest, and the three files beside each other.
303
+ *
304
+ * Synchronous and streamed into the response rather than delivered as a job, and that is a checked
305
+ * constraint rather than a preference. Core exposes exactly one file procedure over the broker —
306
+ * `files.get` — so a module cannot mint a `FileObject`; `createUpload` requires a user principal and
307
+ * a background job has none. Writing bytes straight into `kernel.storage` would produce an object
308
+ * invisible to `core.files.*`, absent from the workspace file list, uncounted by the `storageBytes`
309
+ * entitlement and deleted by nothing — orphans by design. Async delivery becomes possible the day
310
+ * core grows a procedure that mints a file for a service principal, and that is a change to core.
311
+ */
312
+ export const PayrollExport = z.object({
313
+ manifest: PayrollExportManifest,
314
+ /** `hours.csv`, `leave.csv`, `manifest.json`. Three, always, for as long as v1 exists. */
315
+ files: z.array(PayrollExportFile).length(3),
316
+ });
317
+ /**
318
+ * The same rows as JSON, with no file and no refusal thrown.
319
+ *
320
+ * So a screen can show the totals and the reasons it would be refused before anybody downloads
321
+ * anything. `exportable` is `refusals.length === 0`.
322
+ */
323
+ export const PayrollExportPreview = z.object({
324
+ manifest: PayrollExportManifest,
325
+ refusals: z.array(PayrollExportRefusal),
326
+ exportable: z.boolean(),
327
+ totals: PayrollExportTotals,
328
+ hours: z.array(PayrollHoursRow),
329
+ leave: z.array(PayrollLeaveRow),
330
+ });
331
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/contract/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,WAAW;IACX,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,KAAK;IACL,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,UAAU;IACV,eAAe;IACf,8BAA8B;IAC9B,YAAY;IACZ,mBAAmB;IACnB,gBAAgB;IAChB,0BAA0B;IAC1B,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;IACb,eAAe;IACf,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,mBAAmB;CACX,CAAA;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,cAAc;IACd,YAAY;IACZ,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;CACF,CAAA;AAEV,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB;;;;;;;OAOG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,yFAAyF;IACzF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;IAC3B,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE;IAChC,2FAA2F;IAC3F,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE;IACtC,8DAA8D;IAC9D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC/B,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACnC,+EAA+E;IAC/E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC9B,8EAA8E;IAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,iGAAiG;IACjG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC3B,CAAC,CAAA;AAGF,sGAAsG;AACtG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC/B,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACnC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7C,iGAAiG;IACjG,sBAAsB;IACtB,mEAAmE;IACnE,kBAAkB;IAClB,iFAAiF;IACjF,0BAA0B;CAC3B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,wBAAwB;IAC9B,qEAAqE;IACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,gFAAgF;IAChF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;CAC7B,CAAC,CAAA;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC5B,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC7B,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CAClC,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAC5C,WAAW,EAAE,SAAS;IACtB,0FAA0F;IAC1F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE;IACvB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,2FAA2F;IAC3F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,0FAA0F;IAC1F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC5B,qFAAqF;IACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,iGAAiG;IACjG,KAAK,EAAE,WAAW;IAClB,yFAAyF;IACzF,UAAU,EAAE,cAAc;IAC1B,kGAAkG;IAClG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAClC,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;CACrG,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,kGAAkG;IAClG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAA;AAGF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,qBAAqB;IAC/B,0FAA0F;IAC1F,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;CAChC,CAAC,CAAA"}
@@ -10,12 +10,14 @@ export * from './approvals.js';
10
10
  export * from './attendance.js';
11
11
  export * from './capabilities.js';
12
12
  export * from './events.js';
13
+ export * from './exports.js';
13
14
  export * from './leave.js';
14
15
  export * from './models.js';
15
16
  export * from './permissions.js';
16
17
  export * from './policies.js';
17
18
  export * from './privacy.js';
18
19
  export * from './reports.js';
20
+ export * from './rosters.js';
19
21
  export * from './router.js';
20
22
  export * from './settings.js';
21
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -10,12 +10,14 @@ export * from './approvals.js';
10
10
  export * from './attendance.js';
11
11
  export * from './capabilities.js';
12
12
  export * from './events.js';
13
+ export * from './exports.js';
13
14
  export * from './leave.js';
14
15
  export * from './models.js';
15
16
  export * from './permissions.js';
16
17
  export * from './policies.js';
17
18
  export * from './privacy.js';
18
19
  export * from './reports.js';
20
+ export * from './rosters.js';
19
21
  export * from './router.js';
20
22
  export * from './settings.js';
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
@@ -197,8 +197,8 @@ export declare const hrPermissions: readonly [{
197
197
  readonly dangerous: false;
198
198
  }, {
199
199
  readonly key: "hr.attendance.manage";
200
- readonly label: "Correct punches, schedules and day sheets";
201
- readonly description: "Voids punches and recomputes days. Every change leaves the original visible.";
200
+ readonly label: "Correct punches and set schedules, rosters and day sheets";
201
+ readonly description: string;
202
202
  readonly scope: "workspace";
203
203
  readonly defaultRoles: ["owner", "admin"];
204
204
  readonly dangerous: true;
@@ -209,6 +209,13 @@ export declare const hrPermissions: readonly [{
209
209
  readonly scope: "workspace";
210
210
  readonly defaultRoles: ["owner", "admin"];
211
211
  readonly dangerous: false;
212
+ }, {
213
+ readonly key: "hr.payroll.export";
214
+ readonly label: "Export a payroll file";
215
+ readonly description: string;
216
+ readonly scope: "workspace";
217
+ readonly defaultRoles: [];
218
+ readonly dangerous: true;
212
219
  }, {
213
220
  readonly key: "hr.policy.view";
214
221
  readonly label: "View accrual, overtime and rounding policies";
@@ -289,6 +296,7 @@ export declare const HR_PERMISSIONS: {
289
296
  readonly attendanceViewTeam: "hr.attendance.view_team";
290
297
  readonly attendanceManage: "hr.attendance.manage";
291
298
  readonly reportView: "hr.report.view";
299
+ readonly payrollExport: "hr.payroll.export";
292
300
  readonly policyView: "hr.policy.view";
293
301
  readonly policyManage: "hr.policy.manage";
294
302
  readonly periodManage: "hr.period.manage";
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkVxB,CAAA;AAEF,+DAA+D;AAC/D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCjB,CAAA"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2XxB,CAAA;AAEF,+DAA+D;AAC/D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCjB,CAAA"}
@@ -243,8 +243,10 @@ export const hrPermissions = definePermissions([
243
243
  },
244
244
  {
245
245
  key: 'hr.attendance.manage',
246
- label: 'Correct punches, schedules and day sheets',
247
- description: 'Voids punches and recomputes days. Every change leaves the original visible.',
246
+ label: 'Correct punches and set schedules, rosters and day sheets',
247
+ description: 'Voids punches and recomputes days. Every change leaves the original visible. Also edits ' +
248
+ 'shifts and rotations and puts people on them, which decides what a shift worker is ' +
249
+ 'expected to turn up for.',
248
250
  scope: 'workspace',
249
251
  defaultRoles: ['owner', 'admin'],
250
252
  dangerous: true,
@@ -253,6 +255,14 @@ export const hrPermissions = definePermissions([
253
255
  // nothing asks a question these keys could answer — a role checkbox that gates nothing teaches an
254
256
  // administrator the same lesson a dead capability switch does. They come back with the approval
255
257
  // flow that needs them.
258
+ //
259
+ // No `hr.roster.*` either, for the same reason and after weighing it. Rostering is `manage`:
260
+ // deciding what somebody was meant to work is the same authority as correcting what they did, and
261
+ // both feed the same day sheet. Reading a roster is `hr.attendance.view` for your own and
262
+ // `hr.attendance.view_team` for anybody else's — the coverage grid asks for the second, which is
263
+ // already what `attendance.days.list` costs to read a whole office. Four new keys would gate
264
+ // nothing the three existing ones do not already gate, which is how `hr.overtime.*` came to be
265
+ // deleted. They arrive if a workspace ever needs a planner who may roster and may not correct.
256
266
  // ---------------------------------------------------------------- reports
257
267
  {
258
268
  key: 'hr.report.view',
@@ -274,9 +284,37 @@ export const hrPermissions = definePermissions([
274
284
  // Why a key of its own at all, when the two above would do: a reports surface is the one place a
275
285
  // whole population's figures are put in front of somebody in a form that goes into a payroll or a
276
286
  // performance conversation, and a workspace has to be able to grant a manager their team's day
277
- // sheets without granting them that. There is deliberately **no** `hr.report.export`: nothing in
278
- // this module writes a file, and a key gating a button nobody built is the thing the removed
279
- // `hr.overtime.*` block below is a note about.
287
+ // sheets without granting them that. There is still no `hr.report.export` the reports write no
288
+ // file and the one thing in this module that does have its own key below.
289
+ // ---------------------------------------------------------------- payroll export
290
+ {
291
+ key: 'hr.payroll.export',
292
+ label: 'Export a payroll file',
293
+ description: "Writes every employee's period, employment basis and hours out of Kern as CSV, for one " +
294
+ 'legal entity. The file leaves the building. Grant to whoever files payroll, not to a role.',
295
+ scope: 'workspace',
296
+ // Nobody by default, like `hr.person.view_sensitive` and `hr.privacy.manage`. An owner passes
297
+ // every check regardless; every other holder had to be given it deliberately.
298
+ defaultRoles: [],
299
+ dangerous: true,
300
+ },
301
+ // This is the key the note above says did not exist yet, and it exists now because something
302
+ // finally writes a file: `payroll.export.v1` and `payroll.export.preview` both ship gated on it in
303
+ // this same change, which is the rule — a capability, a permission key and an entitlement key are
304
+ // all lies until something enforces them.
305
+ //
306
+ // It is not `hr.report.export`, and the difference is not cosmetic. A report is a screen somebody
307
+ // reads inside Kern; this is a file that leaves it, addressed to an organisation that will pay
308
+ // people from it. The two audiences are different and so is the blast radius, so a workspace has to
309
+ // be able to grant every report without granting this.
310
+ //
311
+ // Like the reports, it is a **second** check rather than a replacement: both procedures also ask
312
+ // for `hr.attendance.view_team` (the hours file) and `hr.leave.view_team` (the leave file), because
313
+ // an export must not answer what the row-level procedure would refuse.
314
+ //
315
+ // It reads no sensitive field, so it writes no `sensitive_access_log` row. A later version that
316
+ // adds `iban` becomes a bulk sensitive read and owes one row per person with `via: 'export'` — the
317
+ // enum member already exists — and its own key on top of this one.
280
318
  // ---------------------------------------------------------------- policies and periods
281
319
  {
282
320
  key: 'hr.policy.view',
@@ -378,6 +416,7 @@ export const HR_PERMISSIONS = {
378
416
  attendanceViewTeam: 'hr.attendance.view_team',
379
417
  attendanceManage: 'hr.attendance.manage',
380
418
  reportView: 'hr.report.view',
419
+ payrollExport: 'hr.payroll.export',
381
420
  policyView: 'hr.policy.view',
382
421
  policyManage: 'hr.policy.manage',
383
422
  periodManage: 'hr.period.manage',
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/contract/permissions.ts"],"names":[],"mappings":"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"}