@foir/sdk 0.20.0 → 0.22.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 (65) hide show
  1. package/CHANGELOG.md +135 -1
  2. package/README.md +9 -9
  3. package/dist/app/client.d.ts +90 -84
  4. package/dist/app/contract/proto/apps/v1/apps_pb.d.ts +14 -13
  5. package/dist/app/dispatch.d.ts +5 -5
  6. package/dist/app/errors.d.ts +11 -11
  7. package/dist/app/index.d.ts +4 -4
  8. package/dist/app/naming.d.ts +1 -1
  9. package/dist/app/ticket.d.ts +2 -2
  10. package/dist/app/vocabulary.generated.d.ts +2 -2
  11. package/dist/app-contract.js +3 -3
  12. package/dist/app.js +92 -90
  13. package/dist/auth/access.d.ts +19 -19
  14. package/dist/auth/auth.d.ts +216 -114
  15. package/dist/auth/hosted.d.ts +14 -14
  16. package/dist/auth/index.d.ts +7 -7
  17. package/dist/auth/operations.d.ts +128 -32
  18. package/dist/auth/ops.d.ts +39 -21
  19. package/dist/auth/session-client.d.ts +3 -3
  20. package/dist/auth-session.js +3 -3
  21. package/dist/auth.js +291 -146
  22. package/dist/client/platform-client.d.ts +1 -1
  23. package/dist/client.js +32 -5
  24. package/dist/codegen/index.js +1 -1
  25. package/dist/data/builtins.d.ts +41 -82
  26. package/dist/data/client.d.ts +2 -2
  27. package/dist/data/decimal.d.ts +1 -1
  28. package/dist/data/document.d.ts +14 -0
  29. package/dist/data/index.d.ts +2 -2
  30. package/dist/data/manifest.d.ts +1 -1
  31. package/dist/data/schema.d.ts +1 -1
  32. package/dist/data/transport.d.ts +33 -26
  33. package/dist/data/ws-transport.d.ts +1 -1
  34. package/dist/data.js +97 -19
  35. package/dist/graphql/content-client.d.ts +13 -13
  36. package/dist/index.js +24 -0
  37. package/dist/live/drift.d.ts +1 -1
  38. package/dist/media/screen-capture.d.ts +1 -1
  39. package/dist/next/index.d.ts +2 -2
  40. package/dist/next/session.d.ts +10 -10
  41. package/dist/next.js +121 -61
  42. package/dist/placement/index.d.ts +15 -32
  43. package/dist/placement.js +18 -20
  44. package/dist/push.js +113 -46
  45. package/dist/react/FoirFeedback.d.ts +2 -2
  46. package/dist/react/FoirProvider.d.ts +23 -23
  47. package/dist/react/SignIn.d.ts +4 -4
  48. package/dist/react/UserButton.d.ts +1 -1
  49. package/dist/react/feedback-notes.d.ts +4 -4
  50. package/dist/react/index.d.ts +3 -3
  51. package/dist/react.js +168 -105
  52. package/dist/realtime/index.d.ts +1 -1
  53. package/dist/server/callback-client.d.ts +4 -4
  54. package/dist/server/events-client.d.ts +18 -18
  55. package/dist/server/operation-types.d.ts +8 -8
  56. package/dist/server/require-scoped-token.d.ts +3 -3
  57. package/dist/server/server-client.d.ts +1 -1
  58. package/dist/server/types.d.ts +1 -1
  59. package/dist/server/verify-scoped-token.d.ts +4 -28
  60. package/dist/server.js +67 -112
  61. package/dist/transport/foir-http.d.ts +57 -18
  62. package/dist/transport/key-kind.d.ts +40 -0
  63. package/dist/types/index.d.ts +2 -2
  64. package/package.json +3 -3
  65. package/dist/server/older-claims.generated.d.ts +0 -8
@@ -121,9 +121,9 @@ export declare type AppConfig = Message<"apps.v1.AppConfig"> & {
121
121
  * OPTIONAL. The app's own system has customers who sign in to it. See
122
122
  * CustomerSignIn.
123
123
  *
124
- * @generated from field: apps.v1.CustomerSignIn customer_sign_in = 14;
124
+ * @generated from field: apps.v1.UserSignIn user_sign_in = 14;
125
125
  */
126
- customerSignIn?: CustomerSignIn | undefined;
126
+ userSignIn?: UserSignIn | undefined;
127
127
  };
128
128
 
129
129
  /**
@@ -150,9 +150,9 @@ export declare const AppConfigSchema: GenMessage<AppConfig>;
150
150
  * feature that finds customers through it (Feature.customer_sign_in), and an
151
151
  * operation that asks who holds an identity (customers:read:identity).
152
152
  *
153
- * @generated from message apps.v1.CustomerSignIn
153
+ * @generated from message apps.v1.UserSignIn
154
154
  */
155
- export declare type CustomerSignIn = Message<"apps.v1.CustomerSignIn"> & {
155
+ export declare type UserSignIn = Message<"apps.v1.UserSignIn"> & {
156
156
  /**
157
157
  * What the setup tells the operator they are choosing, in a sentence: which
158
158
  * customers these are and what identifies them.
@@ -163,10 +163,10 @@ export declare type CustomerSignIn = Message<"apps.v1.CustomerSignIn"> & {
163
163
  };
164
164
 
165
165
  /**
166
- * Describes the message apps.v1.CustomerSignIn.
167
- * Use `create(CustomerSignInSchema)` to create a new message.
166
+ * Describes the message apps.v1.UserSignIn.
167
+ * Use `create(UserSignInSchema)` to create a new message.
168
168
  */
169
- export declare const CustomerSignInSchema: GenMessage<CustomerSignIn>;
169
+ export declare const UserSignInSchema: GenMessage<UserSignIn>;
170
170
 
171
171
  /**
172
172
  * A feature of the app: something the operator turns on or off as a whole at
@@ -230,9 +230,9 @@ export declare type Feature = Message<"apps.v1.Feature"> & {
230
230
  * be on at an install that pairs none: the setup asks for the sign-in at the
231
231
  * switch, and the platform refuses the switch without one.
232
232
  *
233
- * @generated from field: bool customer_sign_in = 6;
233
+ * @generated from field: bool user_sign_in = 6;
234
234
  */
235
- customerSignIn: boolean;
235
+ userSignIn: boolean;
236
236
 
237
237
  /**
238
238
  * The notification category the feature sends under, when it sends
@@ -1520,7 +1520,7 @@ export declare const FieldSyncDirectionSchema: GenEnum<FieldSyncDirection>;
1520
1520
 
1521
1521
  /**
1522
1522
  * The level that owns each row of an app's storage: the three levels a model
1523
- * can be owned at, less the operator-private one, which no app writes.
1523
+ * can be owned at.
1524
1524
  *
1525
1525
  * @generated from enum apps.v1.StorageOwner
1526
1526
  */
@@ -1545,11 +1545,12 @@ export enum StorageOwner {
1545
1545
  ORGANIZATION = 2,
1546
1546
 
1547
1547
  /**
1548
- * Each row belongs to a customer, and only they and the project read it.
1548
+ * Each row belongs to a user, and only they and whoever holds every user's
1549
+ * rows read it.
1549
1550
  *
1550
- * @generated from enum value: STORAGE_OWNER_CUSTOMER = 3;
1551
+ * @generated from enum value: STORAGE_OWNER_USER = 4;
1551
1552
  */
1552
- CUSTOMER = 3,
1553
+ USER = 4,
1553
1554
  }
1554
1555
 
1555
1556
  /**
@@ -10,14 +10,14 @@
10
10
  * and every run a hook, a schedule or `execute<Op>`
11
11
  * starts.
12
12
  * a direct call `{ project, app, operation, triggered_by,
13
- * execution_id, input? }`: an operator running a SYNC
13
+ * execution_id, input? }`: somebody running a SYNC
14
14
  * operation from the console, discovery during setup,
15
15
  * and the uninstall teardown. Nothing is queued, so
16
16
  * `execution_id` is the id of the token the call
17
17
  * carried and no execution holds it.
18
18
  * the credential probe `{ project, app, operation, values }`: the reserved
19
19
  * `__validate_credentials` operation, sent the
20
- * credential an operator is about to save.
20
+ * credential somebody is about to save.
21
21
  *
22
22
  * `readAppDispatch` reads the first two as one shape. `readCredentialProbe`
23
23
  * reads the third.
@@ -44,19 +44,19 @@ export interface AppDispatch {
44
44
  * Read an app operation's dispatch body, already parsed from JSON.
45
45
  *
46
46
  * It does not refuse a body it cannot place: a direct call may carry no input
47
- * and no id, and an endpoint that answered 4xx to one would fail an operator's
47
+ * and no id, and an endpoint that answered 4xx to one would fail somebody's
48
48
  * action over a field it does not need. What is absent is absent on the
49
49
  * answer.
50
50
  */
51
51
  export declare function readAppDispatch(body: unknown): AppDispatch;
52
52
  /**
53
- * Read the credential probe's body: the values an operator submitted, by the
53
+ * Read the credential probe's body: the values somebody submitted, by the
54
54
  * manifest's credential field names. Every value the credential store accepts
55
55
  * is a string, so anything else is left out rather than handed on as a
56
56
  * surprise.
57
57
  *
58
58
  * The probe carries no `X-Foir-Context`, and whatever answers it with a
59
- * non-2xx blocks the operator's save. So answer 400 only for a value they can
59
+ * non-2xx blocks their save. So answer 400 only for a value they can
60
60
  * retype, and 200 for everything else, including a check you could not run.
61
61
  */
62
62
  export declare function readCredentialProbe(body: unknown): {
@@ -25,34 +25,34 @@ export interface AppLookupConflict {
25
25
  */
26
26
  export declare function appLookupConflictOf(error: unknown): AppLookupConflict | null;
27
27
  /**
28
- * A save to a customer's record refused because no customer holds the
28
+ * A save to a user's record refused because no user holds the
29
29
  * identity at the install's level and no email came to make one, or null for
30
- * any other failure. Nothing is wrong with the row: the customer is known once
30
+ * any other failure. Nothing is wrong with the row: the user is known once
31
31
  * they sign in with the sign-in the install pairs with the source.
32
32
  */
33
- export declare function appCustomerUnlinkedOf(error: unknown): {
33
+ export declare function appUserUnlinkedOf(error: unknown): {
34
34
  model: string;
35
35
  identityProvider: string;
36
36
  } | null;
37
37
  /**
38
- * Why a project cannot send a customer an email. `NO_APP_BASE_URL`: no App base
39
- * URL is set for the project, or for the customer's organization. A reason
38
+ * Why a project cannot send a user an email. `NO_APP_BASE_URL`: no App base
39
+ * URL is set for the project, or for the user's organization. A reason
40
40
  * this build does not know arrives as the platform spelled it.
41
41
  */
42
- export type AppCustomerEmailUnavailableReason = 'NO_APP_BASE_URL' | (string & {});
42
+ export type AppUserEmailUnavailableReason = 'NO_APP_BASE_URL' | (string & {});
43
43
  /** The reason as the platform sent it, or null when it sent none. */
44
- export declare function customerEmailUnavailableReasonOf(value: unknown): AppCustomerEmailUnavailableReason | null;
44
+ export declare function userEmailUnavailableReasonOf(value: unknown): AppUserEmailUnavailableReason | null;
45
45
  /**
46
- * A request refused because it would send a customer an email the project
46
+ * A request refused because it would send a user an email the project
47
47
  * cannot send, or null for any other failure. Nothing was written and nothing
48
48
  * was queued. An opt-in to a category confirmed by email is refused this way,
49
49
  * and so is a notification that carries an email.
50
50
  *
51
- * It is about the project, not the customer: the project's operator fixes it,
51
+ * It is about the project, not the user: the project's team fixes it,
52
52
  * and the same request goes once they have.
53
53
  */
54
- export declare function appCustomerEmailUnavailableOf(error: unknown): {
55
- reason: AppCustomerEmailUnavailableReason;
54
+ export declare function appUserEmailUnavailableOf(error: unknown): {
55
+ reason: AppUserEmailUnavailableReason;
56
56
  } | null;
57
57
  /**
58
58
  * Whether a read failed because the token is not served the field it asked
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * createAppClient call Foir as the install, with the token a dispatch
12
12
  * carried: its configuration, credential and status,
13
- * records of the models it maps, customers and
13
+ * records of the models it maps, users and
14
14
  * notifications.
15
15
  * readAppDispatch the body of a dispatch, whichever way it arrived,
16
16
  * readCredentialProbe and of the credential probe.
@@ -21,9 +21,9 @@
21
21
  * The manifest's own messages are on `@foir/sdk/app/contract`.
22
22
  */
23
23
  export { createAppClient } from './client';
24
- export type { AppBinding, AppClient, AppClientConfig, AppConsentChange, AppConsentSubject, AppCustomer, AppCustomerEraseResult, AppCustomerList, AppCustomerSaveResult, AppFieldMapping, AppInstallConfig, AppNotification, AppOperationStart, AppOrganizationProvision, AppRecord, AppRecordList, AppStartedOperation, AppStatusReport, AppSyncDirection, AppUpsertResult, AppWhoami, } from './client';
25
- export { appCustomerEmailUnavailableOf, appCustomerUnlinkedOf, appLookupConflictOf, isAppFieldWithheld } from './errors';
26
- export type { AppCustomerEmailUnavailableReason, AppLookupConflict } from './errors';
24
+ export type { AppBinding, AppClient, AppClientConfig, AppConsentChange, AppConsentSubject, AppUser, AppUserEraseResult, AppUserList, AppUserSaveResult, AppFieldMapping, AppInstallConfig, AppNotification, AppOperationStart, AppOrganizationProvision, AppRecord, AppRecordList, AppStartedOperation, AppStatusReport, AppSyncDirection, AppUpsertResult, AppWhoami, } from './client';
25
+ export { appUserEmailUnavailableOf, appUserUnlinkedOf, appLookupConflictOf, isAppFieldWithheld } from './errors';
26
+ export type { AppUserEmailUnavailableReason, AppLookupConflict } from './errors';
27
27
  export { appModelFieldName, appModelTypeName, appSelectorEnumValue } from './naming';
28
28
  export { RECORD_KEY_RULE, recordKeyRefusal } from './record-key';
29
29
  export { readAppDispatch, readCredentialProbe } from './dispatch';
@@ -5,7 +5,7 @@
5
5
  * model's key: the singular query, `delete<Type>`, `<Type>WhereInput` and the
6
6
  * rest. A client generated for one project reads those names off the schema.
7
7
  * An app installed in many projects cannot, because the model is whichever one
8
- * each operator mapped, so it derives them from the key the same way the
8
+ * each project mapped, so it derives them from the key the same way the
9
9
  * schema does.
10
10
  *
11
11
  * The rule: split the key on every run of characters that are not letters or
@@ -2,7 +2,7 @@
2
2
  * The exchange ticket: how an app's own OAuth callback gets to write the
3
3
  * credential it was just granted.
4
4
  *
5
- * An install that needs a vendor's consent sends the operator to the app's
5
+ * An install that needs a vendor's consent sends whoever is installing it to the app's
6
6
  * authorize route with a single-use ticket. When the vendor returns them, the
7
7
  * app redeems the ticket for a short-lived token that can do one thing: write
8
8
  * this install's credential. It cannot read the configuration, report status
@@ -26,7 +26,7 @@ export interface RedeemedExchangeTicket {
26
26
  /**
27
27
  * Redeem an exchange ticket. ONE ATTEMPT, on purpose: the ticket is single-use,
28
28
  * so repeating a call whose answer was lost would find the ticket spent, and
29
- * the operator's only way forward would be to start the install again. A
29
+ * their only way forward would be to start the install again. A
30
30
  * failure here is the answer.
31
31
  */
32
32
  export declare function redeemExchangeTicket(options: {
@@ -3,14 +3,14 @@
3
3
  * manifest's hook may subscribe to (an event of the project, that something
4
4
  * emits) is the platform's to say: `validateAppManifest` answers it.
5
5
  */
6
- export declare const APP_HOOK_EVENTS: readonly ["RECORD_CREATED", "RECORD_UPDATED", "RECORD_DELETED", "RECORD_PUBLISHED", "RECORD_UNPUBLISHED", "CUSTOMER_CREATED", "CUSTOMER_UPDATED", "CUSTOMER_DELETED", "CUSTOMER_MERGED", "SESSION_REVOKED", "OPERATION_COMPLETED", "OPERATION_FAILED", "OPERATION_CANCELLED", "OPERATION_TIMED_OUT", "ADMIN_MEMBERSHIP_GRANTED", "ADMIN_MEMBERSHIP_REVOKED", "ADMIN_ROLE_CHANGED", "TENANT_PLAN_CHANGED", "TENANT_SUBSCRIPTION_STATUS_CHANGED", "PROJECT_CREATED", "PROJECT_ARCHIVED", "INVITATION_ACCEPTED", "IMPORT_COMPLETED", "MIGRATION_APPLIED", "BULK_UPDATE_COMPLETED", "BULK_PUBLISH_COMPLETED", "CUSTOMER_PREFERENCE_CHANGED", "ORGANIZATION_CREATED", "ORGANIZATION_UPDATED", "ORGANIZATION_MOVED", "ORGANIZATION_SUSPENDED", "ORGANIZATION_RESUMED", "ORGANIZATION_DELETION_SCHEDULED", "ORGANIZATION_DELETION_CANCELLED", "ORGANIZATION_DELETED", "ORGANIZATION_MEMBER_ADDED", "ORGANIZATION_MEMBER_REMOVED", "ORGANIZATION_MEMBER_ROLE_CHANGED", "PROJECT_REACTIVATED"];
6
+ export declare const APP_HOOK_EVENTS: readonly ["RECORD_CREATED", "RECORD_UPDATED", "RECORD_DELETED", "RECORD_PUBLISHED", "RECORD_UNPUBLISHED", "USER_CREATED", "USER_UPDATED", "USER_DELETED", "USER_MERGED", "SESSION_REVOKED", "OPERATION_COMPLETED", "OPERATION_FAILED", "OPERATION_CANCELLED", "OPERATION_TIMED_OUT", "MEMBERSHIP_GRANTED", "MEMBERSHIP_REVOKED", "MEMBERSHIP_ROLE_CHANGED", "TENANT_PLAN_CHANGED", "TENANT_SUBSCRIPTION_STATUS_CHANGED", "PROJECT_CREATED", "PROJECT_ARCHIVED", "INVITATION_ACCEPTED", "IMPORT_COMPLETED", "MIGRATION_APPLIED", "BULK_UPDATE_COMPLETED", "BULK_PUBLISH_COMPLETED", "USER_PREFERENCE_CHANGED", "ORGANIZATION_CREATED", "ORGANIZATION_UPDATED", "ORGANIZATION_MOVED", "ORGANIZATION_SUSPENDED", "ORGANIZATION_RESUMED", "ORGANIZATION_DELETION_SCHEDULED", "ORGANIZATION_DELETION_CANCELLED", "ORGANIZATION_DELETED", "ORGANIZATION_MEMBER_ADDED", "ORGANIZATION_MEMBER_REMOVED", "ORGANIZATION_MEMBER_ROLE_CHANGED", "PROJECT_REACTIVATED"];
7
7
  /** An event a hook can name. */
8
8
  export type AppHookEvent = (typeof APP_HOOK_EVENTS)[number];
9
9
  /**
10
10
  * The grants an operation declares as written, in the permission catalogue's
11
11
  * names.
12
12
  */
13
- export declare const APP_GRANTS: readonly ["appconfig:read", "appsecrets:delete", "appsecrets:list", "appsecrets:put", "appsecrets:read", "files:delete", "files:delete.all", "files:read", "files:read.all", "files:write", "files:write.all", "identities:delete", "identities:read", "notifications:consent", "notifications:read", "notifications:write.named", "operations:complete", "organizations:create", "organizations:delete", "status:write", "users:create", "users:read.all", "users:read.named"];
13
+ export declare const APP_GRANTS: readonly ["appconfig:read", "appsecrets:delete", "appsecrets:list", "appsecrets:put", "appsecrets:read", "files:delete", "files:delete.all", "files:read", "files:read.all", "files:write", "files:write.all", "identities:delete", "identities:read", "notifications:consent", "notifications:read", "notifications:write.named", "operations:complete", "organizations:create", "organizations:delete", "project:stand", "status:write", "users:create", "users:read.all", "users:read.named"];
14
14
  /** A grant an operation declares as written. */
15
15
  export type AppGrant = (typeof APP_GRANTS)[number];
16
16
  /**
@@ -8,9 +8,9 @@ var file_buf_validate_validate = /* @__PURE__ */ fileDesc("ChtidWYvdmFsaWRhdGUvd
8
8
 
9
9
  // ../proto-ts/src/apps/v1/apps_pb.js
10
10
  import { file_google_protobuf_struct } from "@bufbuild/protobuf/wkt";
11
- var file_apps_v1_apps = /* @__PURE__ */ fileDesc2("ChJhcHBzL3YxL2FwcHMucHJvdG8SB2FwcHMudjEiyQUKCUFwcENvbmZpZxI0CgRuYW1lGAEgASgJQia6SCNyIRhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBIYCgd2ZXJzaW9uGAIgASgJQge6SARyAhABEiMKCG1ldGFkYXRhGAMgASgLMhEuYXBwcy52MS5NZXRhZGF0YRInCgptaWRkbGV3YXJlGAQgASgLMhMuYXBwcy52MS5NaWRkbGV3YXJlEikKC2NyZWRlbnRpYWxzGAUgASgLMhQuYXBwcy52MS5DcmVkZW50aWFscxIwCg9zZXR0aW5nc19zY2hlbWEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjAKB3NvdXJjZXMYByADKAsyHy5hcHBzLnYxLkFwcENvbmZpZy5Tb3VyY2VzRW50cnkSLAoFc2lua3MYCCADKAsyHS5hcHBzLnYxLkFwcENvbmZpZy5TaW5rc0VudHJ5EiYKCm9wZXJhdGlvbnMYCSADKAsyEi5hcHBzLnYxLk9wZXJhdGlvbhIcCgVob29rcxgKIAMoCzINLmFwcHMudjEuSG9vaxIXCgJ1aRgLIAEoCzILLmFwcHMudjEuVUkSIQoHaW5ib3VuZBgMIAEoCzIQLmFwcHMudjEuSW5ib3VuZBIiCghmZWF0dXJlcxgNIAMoCzIQLmFwcHMudjEuRmVhdHVyZRIxChBjdXN0b21lcl9zaWduX2luGA4gASgLMhcuYXBwcy52MS5DdXN0b21lclNpZ25JbhpDCgxTb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgLMhMuYXBwcy52MS5Tb3VyY2VUeXBlOgI4ARpDCgpTaW5rc0VudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLmFwcHMudjEuU2lua0NvbnRyYWN0OgI4ASIlCg5DdXN0b21lclNpZ25JbhITCgtkZXNjcmlwdGlvbhgBIAEoCSKnAgoHRmVhdHVyZRIzCgNrZXkYASABKAlCJrpII3IhGEAyHV5bYS16XVthLXowLTldKigtW2EtejAtOV0rKSokEhYKBXRpdGxlGAIgASgJQge6SARyAhABEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB3NldHRpbmcYBCABKAkSDwoHc291cmNlcxgFIAMoCRIYChBjdXN0b21lcl9zaWduX2luGAYgASgIEkMKFW5vdGlmaWNhdGlvbl9jYXRlZ29yeRgHIAEoCzIkLmFwcHMudjEuRmVhdHVyZU5vdGlmaWNhdGlvbkNhdGVnb3J5EjkKEGNvbnNlbnRfY2F0ZWdvcnkYCCABKAsyHy5hcHBzLnYxLkZlYXR1cmVDb25zZW50Q2F0ZWdvcnkinAEKG0ZlYXR1cmVOb3RpZmljYXRpb25DYXRlZ29yeRIYCgdzZXR0aW5nGAEgASgJQge6SARyAhABEicKA2tleRgCIAEoCUIaukgXchUYQDIRXlthLXpdW2EtejAtOV9dKiQSFQoEbmFtZRgDIAEoCUIHukgEcgIQARITCgtkZXNjcmlwdGlvbhgEIAEoCRIOCgZvcHRfaW4YBSABKAgitAEKFkZlYXR1cmVDb25zZW50Q2F0ZWdvcnkSGAoHc2V0dGluZxgBIAEoCUIHukgEcgIQARInCgNrZXkYAiABKAlCGrpIF3IVGEAyEV5bYS16XVthLXowLTlfXSokEhUKBG5hbWUYAyABKAlCB7pIBHICEAESEwoLZGVzY3JpcHRpb24YBCABKAkSKwoHY2hhbm5lbBgFIAEoCUIaukgXchVSBWVtYWlsUgRwdXNoUgZpbl9hcHAiZQoITWV0YWRhdGESFAoMZGlzcGxheV9uYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEgwKBGljb24YAyABKAkSDgoGYXV0aG9yGAQgASgJEhAKCGhvbWVwYWdlGAUgASgJIi0KCk1pZGRsZXdhcmUSHwoDdXJsGAEgASgJQhK6SA9yDTILXmh0dHBzOi8vLisi7wIKC0NyZWRlbnRpYWxzEi8KCHN0cmF0ZWd5GAEgASgOMh0uYXBwcy52MS5DcmVkZW50aWFscy5TdHJhdGVneRIsCgZzY2hlbWEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESKAoFb2F1dGgYAyABKAsyFC5hcHBzLnYxLk9BdXRoQ29uZmlnSAGIAQESFgoOY29ubmVjdF9ub3RpY2UYBCABKAkiqQEKCFN0cmF0ZWd5EhgKFFNUUkFURUdZX1VOU1BFQ0lGSUVEEAASEgoOU1RSQVRFR1lfT0FVVEgQARIUChBTVFJBVEVHWV9BUElfS0VZEAISGgoWU1RSQVRFR1lfU0hBUkVEX1NFQ1JFVBADEhQKEFNUUkFURUdZX1NTSF9LRVkQBBIRCg1TVFJBVEVHWV9OT05FEAUSFAoQU1RSQVRFR1lfTUFOQUdFRBAGQgkKB19zY2hlbWFCCAoGX29hdXRoIkwKC09BdXRoQ29uZmlnEhwKFGF1dGhvcml6ZV9zdGFydF9wYXRoGAEgASgJEh8KF2F1dGhvcml6ZV9jYWxsYmFja19wYXRoGAIgASgJIlYKB0luYm91bmQSIQoHd2ViaG9vaxgBIAEoCzIQLmFwcHMudjEuV2ViaG9vaxIoCgdhY2NvdW50GAIgASgLMhcuYXBwcy52MS5BY2NvdW50V2ViaG9vayIXCgdXZWJob29rEgwKBHBhdGgYASABKAkiPwoOQWNjb3VudFdlYmhvb2sSDAoEcGF0aBgBIAEoCRIPCgdzZXR0aW5nGAIgASgJEg4KBnNvdXJjZRgDIAEoCSLdAgoKU291cmNlVHlwZRINCgVsYWJlbBgBIAEoCRIvCgZmaWVsZHMYAiADKAsyHy5hcHBzLnYxLlNvdXJjZVR5cGUuRmllbGRzRW50cnkSEwoLbmF0dXJhbF9rZXkYAyABKAkSEAoIb3B0aW9uYWwYBCABKAgSFgoOcHJvdmlzaW9uX29ubHkYBSABKAgSKwoJcmVmZXJlbmNlGAYgASgLMhguYXBwcy52MS5Tb3VyY2VSZWZlcmVuY2USJAoFb3duZXIYByABKA4yFS5hcHBzLnYxLlN0b3JhZ2VPd25lchITCgtyZWNvbW1lbmRlZBgIIAEoCBIOCgZsb29rdXAYCSADKAkSEAoIaWRlbnRpdHkYCiABKAkaRgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuYXBwcy52MS5TdWdnZXN0ZWRGaWVsZDoCOAEiqgIKD1NvdXJjZVJlZmVyZW5jZRIRCglrZXlfZmllbGQYASABKAkSNAoGZmllbGRzGAIgAygLMiQuYXBwcy52MS5Tb3VyY2VSZWZlcmVuY2UuRmllbGRzRW50cnkSEAoIZW5kcG9pbnQYAyABKAkSDQoFaG9zdHMYBCADKAkSKgoHcmVxdWVzdBgFIAEoCzIZLmFwcHMudjEuUmVmZXJlbmNlUmVxdWVzdBIaChJyZXNwb25zZV90cmFuc2Zvcm0YBiABKAkSHQoVY2FjaGVfbWF4X2FnZV9zZWNvbmRzGAcgASgFGkYKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmFwcHMudjEuU3VnZ2VzdGVkRmllbGQ6AjgBIrMCChBSZWZlcmVuY2VSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRIVCg1wYXRoX3RlbXBsYXRlGAIgASgJEjMKBXF1ZXJ5GAMgAygLMiQuYXBwcy52MS5SZWZlcmVuY2VSZXF1ZXN0LlF1ZXJ5RW50cnkSNwoHaGVhZGVycxgEIAMoCzImLmFwcHMudjEuUmVmZXJlbmNlUmVxdWVzdC5IZWFkZXJzRW50cnkSFQoNYm9keV90ZW1wbGF0ZRgFIAEoCRIVCg1iYXRjaF9jYXBhYmxlGAYgASgIGiwKClF1ZXJ5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARouCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK6AQoMU2lua0NvbnRyYWN0Eg0KBWxhYmVsGAEgASgJEjEKBmZpZWxkcxgCIAMoCzIhLmFwcHMudjEuU2lua0NvbnRyYWN0LkZpZWxkc0VudHJ5EhMKC25hdHVyYWxfa2V5GAMgASgJEhAKCG9wdGlvbmFsGAQgASgIGkEKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmFwcHMudjEuU2lua0ZpZWxkOgI4ASKWAgoOU3VnZ2VzdGVkRmllbGQSDAoEdHlwZRgBIAEoCRISCgVsYWJlbBgCIAEoCUgAiAEBEhUKCHJlcXVpcmVkGAMgASgISAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEj0KE3N1cHBvcnRlZF9kaXJlY3Rpb24YBSABKA4yGy5hcHBzLnYxLkZpZWxkU3luY0RpcmVjdGlvbkgDiAEBEhYKCXF1ZXJ5YWJsZRgGIAEoCEgEiAEBQggKBl9sYWJlbEILCglfcmVxdWlyZWRCCQoHX2NvbmZpZ0IWChRfc3VwcG9ydGVkX2RpcmVjdGlvbkIMCgpfcXVlcnlhYmxlIlsKCVNpbmtGaWVsZBIMCgR0eXBlGAEgASgJEhAKCHNlbWFudGljGAIgASgJEhAKCHJlcXVpcmVkGAMgASgIEhIKBWxhYmVsGAQgASgJSACIAQFCCAoGX2xhYmVsIqgECglPcGVyYXRpb24SOgoDa2V5GAEgASgJQi26SCpyKBhAMiReKF9fKT9bYS16XVthLXowLTlfXSooLVthLXowLTlfXSspKiQSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEh0KCGVuZHBvaW50GAQgASgJQgu6SAhyBjIEXi8uKhIUCgxjYXBhYmlsaXRpZXMYBSADKAkSDgoGZ3JhbnRzGA0gAygJEhcKCnRpbWVvdXRfbXMYBiABKAVIAYgBARIyCgxyZXRyeV9wb2xpY3kYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESMgoMaW5wdXRfc2NoZW1hGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEjMKDW91dHB1dF9zY2hlbWEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQESGwoOc3VwcG9ydHNfYXN5bmMYCiABKAhIBYgBARIZChFydW5fYWZ0ZXJfaW5zdGFsbBgLIAEoCBIeChZydW5zX29uX21hcHBlZF9zb3VyY2VzGAwgASgIQg4KDF9kZXNjcmlwdGlvbkINCgtfdGltZW91dF9tc0IPCg1fcmV0cnlfcG9saWN5Qg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCEQoPX3N1cHBvcnRzX2FzeW5jIqYBCgRIb29rEjMKA2tleRgBIAEoCUImukgjciEYQDIdXlthLXpdW2EtejAtOV0qKC1bYS16MC05XSspKiQSDAoEbmFtZRgCIAEoCRIWCgVldmVudBgDIAEoCUIHukgEcgIQARInCgZmaWx0ZXIYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKCW9wZXJhdGlvbhgFIAEoCUIHukgEcgIQASI3CgJVSRIxCgpwbGFjZW1lbnRzGAEgAygLMh0uYXBwcy52MS5QbGFjZW1lbnREZWNsYXJhdGlvbiLGBAoUUGxhY2VtZW50RGVjbGFyYXRpb24SMwoDa2V5GAEgASgJQia6SCNyIRhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBI0CgZ0YXJnZXQYAiABKA4yJC5hcHBzLnYxLlBsYWNlbWVudERlY2xhcmF0aW9uLlRhcmdldBISCgVtb2RlbBgDIAEoCUgAiAEBEhIKBWZpZWxkGAQgASgJSAGIAQESIQoZZmllbGRfc2VsZWN0ZWRfYXRfaW5zdGFsbBgFIAEoCBIQCgN0YWIYBiABKAlIAogBARIWCgV0aXRsZRgHIAEoCUIHukgEcgIQARIfCgN1cmwYCCABKAlCErpID3INMgteaHR0cHM6Ly8uKxIdChByZXBsYWNlc19kZWZhdWx0GAkgASgISAOIAQESKwoFaGludHMYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQESDgoGc2NvcGVzGAsgAygJEhAKCHNldHRpbmdzGAwgAygJEg4KBmdyYW50cxgNIAMoCSJ0CgZUYXJnZXQSFgoSVEFSR0VUX1VOU1BFQ0lGSUVEEAASFAoQVEFSR0VUX0ZVTExfUEFHRRABEhYKElRBUkdFVF9NQUlOX0VESVRPUhACEhIKDlRBUkdFVF9TSURFQkFSEAMSEAoMVEFSR0VUX0ZJRUxEEARCCAoGX21vZGVsQggKBl9maWVsZEIGCgRfdGFiQhMKEV9yZXBsYWNlc19kZWZhdWx0QggKBl9oaW50cyqsAQoSRmllbGRTeW5jRGlyZWN0aW9uEiQKIEZJRUxEX1NZTkNfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASJAogRklFTERfU1lOQ19ESVJFQ1RJT05fU09VUkNFX09OTFkQARIiCh5GSUVMRF9TWU5DX0RJUkVDVElPTl9TSU5LX09OTFkQAhImCiJGSUVMRF9TWU5DX0RJUkVDVElPTl9CSURJUkVDVElPTkFMEAMqhAEKDFN0b3JhZ2VPd25lchIdChlTVE9SQUdFX09XTkVSX1VOU1BFQ0lGSUVEEAASGQoVU1RPUkFHRV9PV05FUl9QUk9KRUNUEAESHgoaU1RPUkFHRV9PV05FUl9PUkdBTklaQVRJT04QAhIaChZTVE9SQUdFX09XTkVSX0NVU1RPTUVSEANCNVozZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2FwcHMvdjE7YXBwc3YxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_struct]);
11
+ var file_apps_v1_apps = /* @__PURE__ */ fileDesc2("ChJhcHBzL3YxL2FwcHMucHJvdG8SB2FwcHMudjEiwQUKCUFwcENvbmZpZxI0CgRuYW1lGAEgASgJQia6SCNyIRhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBIYCgd2ZXJzaW9uGAIgASgJQge6SARyAhABEiMKCG1ldGFkYXRhGAMgASgLMhEuYXBwcy52MS5NZXRhZGF0YRInCgptaWRkbGV3YXJlGAQgASgLMhMuYXBwcy52MS5NaWRkbGV3YXJlEikKC2NyZWRlbnRpYWxzGAUgASgLMhQuYXBwcy52MS5DcmVkZW50aWFscxIwCg9zZXR0aW5nc19zY2hlbWEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjAKB3NvdXJjZXMYByADKAsyHy5hcHBzLnYxLkFwcENvbmZpZy5Tb3VyY2VzRW50cnkSLAoFc2lua3MYCCADKAsyHS5hcHBzLnYxLkFwcENvbmZpZy5TaW5rc0VudHJ5EiYKCm9wZXJhdGlvbnMYCSADKAsyEi5hcHBzLnYxLk9wZXJhdGlvbhIcCgVob29rcxgKIAMoCzINLmFwcHMudjEuSG9vaxIXCgJ1aRgLIAEoCzILLmFwcHMudjEuVUkSIQoHaW5ib3VuZBgMIAEoCzIQLmFwcHMudjEuSW5ib3VuZBIiCghmZWF0dXJlcxgNIAMoCzIQLmFwcHMudjEuRmVhdHVyZRIpCgx1c2VyX3NpZ25faW4YDiABKAsyEy5hcHBzLnYxLlVzZXJTaWduSW4aQwoMU291cmNlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLmFwcHMudjEuU291cmNlVHlwZToCOAEaQwoKU2lua3NFbnRyeRILCgNrZXkYASABKAkSJAoFdmFsdWUYAiABKAsyFS5hcHBzLnYxLlNpbmtDb250cmFjdDoCOAEiIQoKVXNlclNpZ25JbhITCgtkZXNjcmlwdGlvbhgBIAEoCSKjAgoHRmVhdHVyZRIzCgNrZXkYASABKAlCJrpII3IhGEAyHV5bYS16XVthLXowLTldKigtW2EtejAtOV0rKSokEhYKBXRpdGxlGAIgASgJQge6SARyAhABEhMKC2Rlc2NyaXB0aW9uGAMgASgJEg8KB3NldHRpbmcYBCABKAkSDwoHc291cmNlcxgFIAMoCRIUCgx1c2VyX3NpZ25faW4YBiABKAgSQwoVbm90aWZpY2F0aW9uX2NhdGVnb3J5GAcgASgLMiQuYXBwcy52MS5GZWF0dXJlTm90aWZpY2F0aW9uQ2F0ZWdvcnkSOQoQY29uc2VudF9jYXRlZ29yeRgIIAEoCzIfLmFwcHMudjEuRmVhdHVyZUNvbnNlbnRDYXRlZ29yeSKcAQobRmVhdHVyZU5vdGlmaWNhdGlvbkNhdGVnb3J5EhgKB3NldHRpbmcYASABKAlCB7pIBHICEAESJwoDa2V5GAIgASgJQhq6SBdyFRhAMhFeW2Etel1bYS16MC05X10qJBIVCgRuYW1lGAMgASgJQge6SARyAhABEhMKC2Rlc2NyaXB0aW9uGAQgASgJEg4KBm9wdF9pbhgFIAEoCCK0AQoWRmVhdHVyZUNvbnNlbnRDYXRlZ29yeRIYCgdzZXR0aW5nGAEgASgJQge6SARyAhABEicKA2tleRgCIAEoCUIaukgXchUYQDIRXlthLXpdW2EtejAtOV9dKiQSFQoEbmFtZRgDIAEoCUIHukgEcgIQARITCgtkZXNjcmlwdGlvbhgEIAEoCRIrCgdjaGFubmVsGAUgASgJQhq6SBdyFVIFZW1haWxSBHB1c2hSBmluX2FwcCJlCghNZXRhZGF0YRIUCgxkaXNwbGF5X25hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDAoEaWNvbhgDIAEoCRIOCgZhdXRob3IYBCABKAkSEAoIaG9tZXBhZ2UYBSABKAkiLQoKTWlkZGxld2FyZRIfCgN1cmwYASABKAlCErpID3INMgteaHR0cHM6Ly8uKyLvAgoLQ3JlZGVudGlhbHMSLwoIc3RyYXRlZ3kYASABKA4yHS5hcHBzLnYxLkNyZWRlbnRpYWxzLlN0cmF0ZWd5EiwKBnNjaGVtYRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIoCgVvYXV0aBgDIAEoCzIULmFwcHMudjEuT0F1dGhDb25maWdIAYgBARIWCg5jb25uZWN0X25vdGljZRgEIAEoCSKpAQoIU3RyYXRlZ3kSGAoUU1RSQVRFR1lfVU5TUEVDSUZJRUQQABISCg5TVFJBVEVHWV9PQVVUSBABEhQKEFNUUkFURUdZX0FQSV9LRVkQAhIaChZTVFJBVEVHWV9TSEFSRURfU0VDUkVUEAMSFAoQU1RSQVRFR1lfU1NIX0tFWRAEEhEKDVNUUkFURUdZX05PTkUQBRIUChBTVFJBVEVHWV9NQU5BR0VEEAZCCQoHX3NjaGVtYUIICgZfb2F1dGgiTAoLT0F1dGhDb25maWcSHAoUYXV0aG9yaXplX3N0YXJ0X3BhdGgYASABKAkSHwoXYXV0aG9yaXplX2NhbGxiYWNrX3BhdGgYAiABKAkiVgoHSW5ib3VuZBIhCgd3ZWJob29rGAEgASgLMhAuYXBwcy52MS5XZWJob29rEigKB2FjY291bnQYAiABKAsyFy5hcHBzLnYxLkFjY291bnRXZWJob29rIhcKB1dlYmhvb2sSDAoEcGF0aBgBIAEoCSI/Cg5BY2NvdW50V2ViaG9vaxIMCgRwYXRoGAEgASgJEg8KB3NldHRpbmcYAiABKAkSDgoGc291cmNlGAMgASgJIt0CCgpTb3VyY2VUeXBlEg0KBWxhYmVsGAEgASgJEi8KBmZpZWxkcxgCIAMoCzIfLmFwcHMudjEuU291cmNlVHlwZS5GaWVsZHNFbnRyeRITCgtuYXR1cmFsX2tleRgDIAEoCRIQCghvcHRpb25hbBgEIAEoCBIWCg5wcm92aXNpb25fb25seRgFIAEoCBIrCglyZWZlcmVuY2UYBiABKAsyGC5hcHBzLnYxLlNvdXJjZVJlZmVyZW5jZRIkCgVvd25lchgHIAEoDjIVLmFwcHMudjEuU3RvcmFnZU93bmVyEhMKC3JlY29tbWVuZGVkGAggASgIEg4KBmxvb2t1cBgJIAMoCRIQCghpZGVudGl0eRgKIAEoCRpGCgtGaWVsZHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5hcHBzLnYxLlN1Z2dlc3RlZEZpZWxkOgI4ASKqAgoPU291cmNlUmVmZXJlbmNlEhEKCWtleV9maWVsZBgBIAEoCRI0CgZmaWVsZHMYAiADKAsyJC5hcHBzLnYxLlNvdXJjZVJlZmVyZW5jZS5GaWVsZHNFbnRyeRIQCghlbmRwb2ludBgDIAEoCRINCgVob3N0cxgEIAMoCRIqCgdyZXF1ZXN0GAUgASgLMhkuYXBwcy52MS5SZWZlcmVuY2VSZXF1ZXN0EhoKEnJlc3BvbnNlX3RyYW5zZm9ybRgGIAEoCRIdChVjYWNoZV9tYXhfYWdlX3NlY29uZHMYByABKAUaRgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuYXBwcy52MS5TdWdnZXN0ZWRGaWVsZDoCOAEiswIKEFJlZmVyZW5jZVJlcXVlc3QSDgoGbWV0aG9kGAEgASgJEhUKDXBhdGhfdGVtcGxhdGUYAiABKAkSMwoFcXVlcnkYAyADKAsyJC5hcHBzLnYxLlJlZmVyZW5jZVJlcXVlc3QuUXVlcnlFbnRyeRI3CgdoZWFkZXJzGAQgAygLMiYuYXBwcy52MS5SZWZlcmVuY2VSZXF1ZXN0LkhlYWRlcnNFbnRyeRIVCg1ib2R5X3RlbXBsYXRlGAUgASgJEhUKDWJhdGNoX2NhcGFibGUYBiABKAgaLAoKUXVlcnlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGi4KDEhlYWRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIroBCgxTaW5rQ29udHJhY3QSDQoFbGFiZWwYASABKAkSMQoGZmllbGRzGAIgAygLMiEuYXBwcy52MS5TaW5rQ29udHJhY3QuRmllbGRzRW50cnkSEwoLbmF0dXJhbF9rZXkYAyABKAkSEAoIb3B0aW9uYWwYBCABKAgaQQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuYXBwcy52MS5TaW5rRmllbGQ6AjgBIpYCCg5TdWdnZXN0ZWRGaWVsZBIMCgR0eXBlGAEgASgJEhIKBWxhYmVsGAIgASgJSACIAQESFQoIcmVxdWlyZWQYAyABKAhIAYgBARIsCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESPQoTc3VwcG9ydGVkX2RpcmVjdGlvbhgFIAEoDjIbLmFwcHMudjEuRmllbGRTeW5jRGlyZWN0aW9uSAOIAQESFgoJcXVlcnlhYmxlGAYgASgISASIAQFCCAoGX2xhYmVsQgsKCV9yZXF1aXJlZEIJCgdfY29uZmlnQhYKFF9zdXBwb3J0ZWRfZGlyZWN0aW9uQgwKCl9xdWVyeWFibGUiWwoJU2lua0ZpZWxkEgwKBHR5cGUYASABKAkSEAoIc2VtYW50aWMYAiABKAkSEAoIcmVxdWlyZWQYAyABKAgSEgoFbGFiZWwYBCABKAlIAIgBAUIICgZfbGFiZWwiqAQKCU9wZXJhdGlvbhI6CgNrZXkYASABKAlCLbpIKnIoGEAyJF4oX18pP1thLXpdW2EtejAtOV9dKigtW2EtejAtOV9dKykqJBIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESHQoIZW5kcG9pbnQYBCABKAlCC7pICHIGMgReLy4qEhQKDGNhcGFiaWxpdGllcxgFIAMoCRIOCgZncmFudHMYDSADKAkSFwoKdGltZW91dF9tcxgGIAEoBUgBiAEBEjIKDHJldHJ5X3BvbGljeRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIyCgxpbnB1dF9zY2hlbWEYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESMwoNb3V0cHV0X3NjaGVtYRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIbCg5zdXBwb3J0c19hc3luYxgKIAEoCEgFiAEBEhkKEXJ1bl9hZnRlcl9pbnN0YWxsGAsgASgIEh4KFnJ1bnNfb25fbWFwcGVkX3NvdXJjZXMYDCABKAhCDgoMX2Rlc2NyaXB0aW9uQg0KC190aW1lb3V0X21zQg8KDV9yZXRyeV9wb2xpY3lCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIRCg9fc3VwcG9ydHNfYXN5bmMipgEKBEhvb2sSMwoDa2V5GAEgASgJQia6SCNyIRhAMh1eW2Etel1bYS16MC05XSooLVthLXowLTldKykqJBIMCgRuYW1lGAIgASgJEhYKBWV2ZW50GAMgASgJQge6SARyAhABEicKBmZpbHRlchgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGgoJb3BlcmF0aW9uGAUgASgJQge6SARyAhABIjcKAlVJEjEKCnBsYWNlbWVudHMYASADKAsyHS5hcHBzLnYxLlBsYWNlbWVudERlY2xhcmF0aW9uIsYEChRQbGFjZW1lbnREZWNsYXJhdGlvbhIzCgNrZXkYASABKAlCJrpII3IhGEAyHV5bYS16XVthLXowLTldKigtW2EtejAtOV0rKSokEjQKBnRhcmdldBgCIAEoDjIkLmFwcHMudjEuUGxhY2VtZW50RGVjbGFyYXRpb24uVGFyZ2V0EhIKBW1vZGVsGAMgASgJSACIAQESEgoFZmllbGQYBCABKAlIAYgBARIhChlmaWVsZF9zZWxlY3RlZF9hdF9pbnN0YWxsGAUgASgIEhAKA3RhYhgGIAEoCUgCiAEBEhYKBXRpdGxlGAcgASgJQge6SARyAhABEh8KA3VybBgIIAEoCUISukgPcg0yC15odHRwczovLy4rEh0KEHJlcGxhY2VzX2RlZmF1bHQYCSABKAhIA4gBARIrCgVoaW50cxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIOCgZzY29wZXMYCyADKAkSEAoIc2V0dGluZ3MYDCADKAkSDgoGZ3JhbnRzGA0gAygJInQKBlRhcmdldBIWChJUQVJHRVRfVU5TUEVDSUZJRUQQABIUChBUQVJHRVRfRlVMTF9QQUdFEAESFgoSVEFSR0VUX01BSU5fRURJVE9SEAISEgoOVEFSR0VUX1NJREVCQVIQAxIQCgxUQVJHRVRfRklFTEQQBEIICgZfbW9kZWxCCAoGX2ZpZWxkQgYKBF90YWJCEwoRX3JlcGxhY2VzX2RlZmF1bHRCCAoGX2hpbnRzKqwBChJGaWVsZFN5bmNEaXJlY3Rpb24SJAogRklFTERfU1lOQ19ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIkCiBGSUVMRF9TWU5DX0RJUkVDVElPTl9TT1VSQ0VfT05MWRABEiIKHkZJRUxEX1NZTkNfRElSRUNUSU9OX1NJTktfT05MWRACEiYKIkZJRUxEX1NZTkNfRElSRUNUSU9OX0JJRElSRUNUSU9OQUwQAyqeAQoMU3RvcmFnZU93bmVyEh0KGVNUT1JBR0VfT1dORVJfVU5TUEVDSUZJRUQQABIZChVTVE9SQUdFX09XTkVSX1BST0pFQ1QQARIeChpTVE9SQUdFX09XTkVSX09SR0FOSVpBVElPThACEhYKElNUT1JBR0VfT1dORVJfVVNFUhAEIgQIAxADKhZTVE9SQUdFX09XTkVSX0NVU1RPTUVSQjVaM2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9hcHBzL3YxO2FwcHN2MWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_struct]);
12
12
  var AppConfigSchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 0);
13
- var CustomerSignInSchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 1);
13
+ var UserSignInSchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 1);
14
14
  var FeatureSchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 2);
15
15
  var FeatureNotificationCategorySchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 3);
16
16
  var FeatureConsentCategorySchema = /* @__PURE__ */ messageDesc2(file_apps_v1_apps, 4);
@@ -74,7 +74,6 @@ export {
74
74
  CredentialsSchema,
75
75
  Credentials_Strategy,
76
76
  Credentials_StrategySchema,
77
- CustomerSignInSchema,
78
77
  DiscoveredAccountSchema,
79
78
  DiscoveredCountSchema,
80
79
  DiscoveredFieldGroupSchema,
@@ -116,6 +115,7 @@ export {
116
115
  StorageOwnerSchema,
117
116
  SuggestedFieldSchema,
118
117
  UISchema,
118
+ UserSignInSchema,
119
119
  WebhookSchema,
120
120
  file_apps_v1_apps,
121
121
  file_apps_v1_discovery