@growsober/sdk 1.0.0 → 1.0.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.
Files changed (39) hide show
  1. package/dist/api/mutations/admin.d.ts +1 -20
  2. package/dist/api/mutations/admin.js +1 -1
  3. package/dist/api/mutations/auth.d.ts +83 -1
  4. package/dist/api/mutations/auth.js +102 -1
  5. package/dist/api/mutations/event-chat.d.ts +84 -7
  6. package/dist/api/mutations/event-chat.js +1 -1
  7. package/dist/api/mutations/matching.d.ts +2 -19
  8. package/dist/api/mutations/matching.js +6 -6
  9. package/dist/api/mutations/support.d.ts +5 -5
  10. package/dist/api/mutations/support.js +1 -1
  11. package/dist/api/queries/ambassadors.d.ts +71 -5
  12. package/dist/api/queries/ambassadors.js +1 -1
  13. package/dist/api/queries/cities.d.ts +52 -0
  14. package/dist/api/queries/cities.js +82 -0
  15. package/dist/api/queries/event-chat.d.ts +30 -4
  16. package/dist/api/queries/grow90.d.ts +46 -4
  17. package/dist/api/queries/hubs.d.ts +2 -2
  18. package/dist/api/queries/hubs.js +1 -1
  19. package/dist/api/queries/index.d.ts +1 -0
  20. package/dist/api/queries/index.js +2 -1
  21. package/dist/api/queries/map.d.ts +3 -3
  22. package/dist/api/queries/map.js +1 -1
  23. package/dist/api/queries/support.d.ts +88 -8
  24. package/dist/api/queries/support.js +1 -1
  25. package/dist/api/types.d.ts +63 -393
  26. package/dist/api/types.js +4 -4
  27. package/package.json +1 -1
  28. package/src/api/mutations/admin.ts +1 -20
  29. package/src/api/mutations/auth.ts +114 -0
  30. package/src/api/mutations/event-chat.ts +7 -7
  31. package/src/api/mutations/matching.ts +12 -32
  32. package/src/api/mutations/support.ts +11 -11
  33. package/src/api/queries/ambassadors.ts +6 -3
  34. package/src/api/queries/cities.ts +194 -0
  35. package/src/api/queries/hubs.ts +3 -3
  36. package/src/api/queries/index.ts +1 -0
  37. package/src/api/queries/map.ts +10 -10
  38. package/src/api/queries/support.ts +8 -8
  39. package/src/api/types.ts +96 -448
@@ -8,27 +8,8 @@
8
8
  * @module api/mutations/admin
9
9
  */
10
10
  import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
11
+ import type { AdminUpdateUserRequest, AdminCreateContentRequest } from '../types';
11
12
  import type { UserResponse, HubResponse, EventResponse, BusinessResponse, LibraryContentResponse, CreateHubRequest, UpdateHubRequest, UpdateEventRequest } from '../types';
12
- export interface AdminUpdateUserRequest {
13
- displayName?: string;
14
- email?: string;
15
- role?: string;
16
- isPremium?: boolean;
17
- isSuspended?: boolean;
18
- }
19
- export interface AdminCreateContentRequest {
20
- title: string;
21
- type: string;
22
- category: string;
23
- description?: string;
24
- content?: string;
25
- mediaUrl?: string;
26
- thumbnailUrl?: string;
27
- duration?: number;
28
- isPremium?: boolean;
29
- isFeatured?: boolean;
30
- sortOrder?: number;
31
- }
32
13
  export interface AdminUpdateContentRequest extends Partial<AdminCreateContentRequest> {
33
14
  }
34
15
  export interface AdminVerifyBusinessRequest {
@@ -323,4 +323,4 @@ function useAdminDeleteContent(options) {
323
323
  ...options,
324
324
  });
325
325
  }
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7O0FBd0VILGdEQTJCQztBQU9ELGtEQTZCQztBQU9ELG9EQW1CQztBQU9ELGdEQWlCQztBQVdELDhDQWlCQztBQU9ELDhDQTBCQztBQU9ELDhDQWlCQztBQVdELGtEQTBCQztBQU9ELGtEQTZCQztBQVdELHdEQXdDQztBQU9ELHdEQW1CQztBQVdELHNEQXNCQztBQU9ELHNEQXFDQztBQU9ELHNEQWtCQztBQXhnQkQsdURBSytCO0FBQy9CLHNDQUF5QztBQUN6Qyw0Q0FBNkM7QUFzRDdDLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7O0dBSUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsT0FHQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUF5QixFQUFFO1lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBZSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLFdBQVcsQ0FBQyxp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IFF1ZXJ5IG11dGF0aW9uIGhvb2tzIGZvciBhZG1pbi1yZWxhdGVkIHdyaXRlIG9wZXJhdGlvbnMuXG4gKiBUaGVzZSBob29rcyBoYW5kbGUgYWRtaW4gYWN0aW9ucyBsaWtlIHVzZXIgbWFuYWdlbWVudCwgY29udGVudCBtb2RlcmF0aW9uLFxuICogYW5kIGJ1c2luZXNzIHZlcmlmaWNhdGlvbi5cbiAqXG4gKiBAbW9kdWxlIGFwaS9tdXRhdGlvbnMvYWRtaW5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VNdXRhdGlvbixcbiAgVXNlTXV0YXRpb25PcHRpb25zLFxuICBVc2VNdXRhdGlvblJlc3VsdCxcbiAgdXNlUXVlcnlDbGllbnQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgYWRtaW5LZXlzIH0gZnJvbSAnLi4vcXVlcmllcy9hZG1pbic7XG5pbXBvcnQgdHlwZSB7XG4gIFVzZXJSZXNwb25zZSxcbiAgSHViUmVzcG9uc2UsXG4gIEV2ZW50UmVzcG9uc2UsXG4gIEJ1c2luZXNzUmVzcG9uc2UsXG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIENyZWF0ZUh1YlJlcXVlc3QsXG4gIFVwZGF0ZUh1YlJlcXVlc3QsXG4gIFVwZGF0ZUV2ZW50UmVxdWVzdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVRVNUIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5VcGRhdGVVc2VyUmVxdWVzdCB7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBlbWFpbD86IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbiAgaXNQcmVtaXVtPzogYm9vbGVhbjtcbiAgaXNTdXNwZW5kZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluQ3JlYXRlQ29udGVudFJlcXVlc3Qge1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb250ZW50Pzogc3RyaW5nO1xuICBtZWRpYVVybD86IHN0cmluZztcbiAgdGh1bWJuYWlsVXJsPzogc3RyaW5nO1xuICBkdXJhdGlvbj86IG51bWJlcjtcbiAgaXNQcmVtaXVtPzogYm9vbGVhbjtcbiAgaXNGZWF0dXJlZD86IGJvb2xlYW47XG4gIHNvcnRPcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZG1pblVwZGF0ZUNvbnRlbnRSZXF1ZXN0IGV4dGVuZHMgUGFydGlhbDxBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0PiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluVmVyaWZ5QnVzaW5lc3NSZXF1ZXN0IHtcbiAgaXNWZXJpZmllZDogYm9vbGVhbjtcbiAgbm90ZXM/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNFIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5BY3Rpb25SZXNwb25zZSB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVNFUiBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBVcGRhdGUgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL2FkbWluL3VzZXJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFVzZXJSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5VcGRhdGVVc2VyUmVxdWVzdCB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VXNlclJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblVwZGF0ZVVzZXJSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogQWRtaW5VcGRhdGVVc2VyUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxVc2VyUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PFVzZXJSZXNwb25zZT4oYC9hcGkvdjEvYWRtaW4vdXNlcnMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogU3VzcGVuZCB1c2VyIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL2FkbWluL3VzZXJzL3tpZH0vc3VzcGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5TdXNwZW5kVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IHJlYXNvbj86IHN0cmluZyB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgcmVhc29uPzogc3RyaW5nIH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgcmVhc29uLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZWFzb24/OiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8QWRtaW5BY3Rpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi91c2Vycy8ke2lkfS9zdXNwZW5kYCxcbiAgICAgICAgeyByZWFzb24gfVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQWN0aXZhdGUgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi91c2Vycy97aWR9L2FjdGl2YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkFjdGl2YXRlVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QWRtaW5BY3Rpb25SZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL3VzZXJzLyR7aWR9L2FjdGl2YXRlYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgaWQpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy51c2Vycy5kZXRhaWwoaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSB1c2VyIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vdXNlcnMve2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5EZWxldGVVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL3VzZXJzLyR7aWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVUIgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGh1YiAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi9odWJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNyZWF0ZUh1YihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEh1YlJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlSHViUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEh1YlJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlSHViUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlSHViUmVxdWVzdCk6IFByb21pc2U8SHViUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxIdWJSZXNwb25zZT4oJy9hcGkvdjEvYWRtaW4vaHVicycsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5odWJzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBodWIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQVVQgL2FwaS92MS9hZG1pbi9odWJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlSHViKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8SHViUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUh1YlJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEh1YlJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVIdWJSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlSHViUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxIdWJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8SHViUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL2h1YnMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5kZXRhaWwodmFyaWFibGVzLmlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5odWJzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBodWIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBERUxFVEUgL2FwaS92MS9hZG1pbi9odWJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluRGVsZXRlSHViKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL2h1YnMvJHtpZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlQgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXBkYXRlIGV2ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvYWRtaW4vZXZlbnRzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVXBkYXRlRXZlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxFdmVudFJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVFdmVudFJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEV2ZW50UmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUV2ZW50UmVxdWVzdCB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IFVwZGF0ZUV2ZW50UmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxFdmVudFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dDxFdmVudFJlc3BvbnNlPihgL2FwaS92MS9hZG1pbi9ldmVudHMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZXZlbnRzLmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmV2ZW50cy5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDYW5jZWwgZXZlbnQgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vZXZlbnRzL3tpZH0vY2FuY2VsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNhbmNlbEV2ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgcmVhc29uPzogc3RyaW5nIH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyByZWFzb24/OiBzdHJpbmcgfT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICByZWFzb24sXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIHJlYXNvbj86IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QWRtaW5BY3Rpb25SZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2V2ZW50cy8ke2lkfS9jYW5jZWxgLFxuICAgICAgICB7IHJlYXNvbiB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5ldmVudHMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZXZlbnRzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCVVNJTkVTUyBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBWZXJpZnkgYnVzaW5lc3MgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vYnVzaW5lc3Nlcy97aWR9L3ZlcmlmeVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5WZXJpZnlCdXNpbmVzcyhcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFxuICAgICAgQnVzaW5lc3NSZXNwb25zZSxcbiAgICAgIEVycm9yLFxuICAgICAgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdCB9XG4gICAgPixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8XG4gIEJ1c2luZXNzUmVzcG9uc2UsXG4gIEVycm9yLFxuICB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVmVyaWZ5QnVzaW5lc3NSZXF1ZXN0IH1cbj4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxCdXNpbmVzc1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QnVzaW5lc3NSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2J1c2luZXNzZXMvJHtpZH0vdmVyaWZ5YCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7XG4gICAgICAgIHF1ZXJ5S2V5OiBhZG1pbktleXMuYnVzaW5lc3Nlcy5kZXRhaWwodmFyaWFibGVzLmlkKSxcbiAgICAgIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmJ1c2luZXNzZXMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGJ1c2luZXNzIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vYnVzaW5lc3Nlcy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkRlbGV0ZUJ1c2luZXNzKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlPEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi9idXNpbmVzc2VzLyR7aWR9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuYnVzaW5lc3Nlcy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEVOVCBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgY29udGVudCAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi9jb250ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkNyZWF0ZUNvbnRlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxMaWJyYXJ5Q29udGVudFJlc3BvbnNlLCBFcnJvciwgQWRtaW5DcmVhdGVDb250ZW50UmVxdWVzdD4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PExpYnJhcnlDb250ZW50UmVzcG9uc2UsIEVycm9yLCBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBBZG1pbkNyZWF0ZUNvbnRlbnRSZXF1ZXN0KTogUHJvbWlzZTxMaWJyYXJ5Q29udGVudFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4oXG4gICAgICAgICcvYXBpL3YxL2FkbWluL2NvbnRlbnQnLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50Lmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBjb250ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvYWRtaW4vY29udGVudC97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pblVwZGF0ZUNvbnRlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxcbiAgICAgIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gICAgICBFcnJvcixcbiAgICAgIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5VcGRhdGVDb250ZW50UmVxdWVzdCB9XG4gICAgPixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8XG4gIExpYnJhcnlDb250ZW50UmVzcG9uc2UsXG4gIEVycm9yLFxuICB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVXBkYXRlQ29udGVudFJlcXVlc3QgfVxuPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IEFkbWluVXBkYXRlQ29udGVudFJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2NvbnRlbnQvJHtpZH1gLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50LmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmNvbnRlbnQubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGNvbnRlbnQgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBERUxFVEUgL2FwaS92MS9hZG1pbi9jb250ZW50L3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluRGVsZXRlQ29udGVudChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZTxBZG1pbkFjdGlvblJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvYWRtaW4vY29udGVudC8ke2lkfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmNvbnRlbnQubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7O0dBUUc7O0FBcURILGdEQTJCQztBQU9ELGtEQTZCQztBQU9ELG9EQW1CQztBQU9ELGdEQWlCQztBQVdELDhDQWlCQztBQU9ELDhDQTBCQztBQU9ELDhDQWlCQztBQVdELGtEQTBCQztBQU9ELGtEQTZCQztBQVdELHdEQXdDQztBQU9ELHdEQW1CQztBQVdELHNEQXNCQztBQU9ELHNEQXFDQztBQU9ELHNEQWtCQztBQXJmRCx1REFLK0I7QUFDL0Isc0NBQXlDO0FBRXpDLDRDQUE2QztBQWtDN0MsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNILFNBQWdCLGtCQUFrQixDQUNoQyxPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUNqQixFQUFFLEVBQ0YsSUFBSSxHQUlMLEVBQXlCLEVBQUU7WUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFlLHVCQUF1QixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUMxQixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLE9BR0M7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQ2pCLEVBQUUsRUFDRixNQUFNLEdBSVAsRUFBZ0MsRUFBRTtZQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLHVCQUF1QixFQUFFLFVBQVUsRUFDbkMsRUFBRSxNQUFNLEVBQUUsQ0FDWCxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLE9BQW9GO0lBRXBGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBVSxFQUFnQyxFQUFFO1lBQzdELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FDaEMsdUJBQXVCLEVBQUUsV0FBVyxDQUNyQyxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDbkIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsT0FBb0Y7SUFFcEYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFVLEVBQWdDLEVBQUU7WUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFzQix1QkFBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2RixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxnQkFBZ0I7QUFDaEIsK0VBQStFO0FBRS9FOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FDL0IsT0FBc0Y7SUFFdEYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFzQixFQUF3QixFQUFFO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBYyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FDL0IsT0FHQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUF3QixFQUFFO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBYyxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDMUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE9BQW9GO0lBRXBGLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBVSxFQUFnQyxFQUFFO1lBQzdELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBc0Isc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwrRUFBK0U7QUFDL0Usa0JBQWtCO0FBQ2xCLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQ2pDLE9BR0M7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQ2pCLEVBQUUsRUFDRixJQUFJLEdBSUwsRUFBMEIsRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQWdCLHdCQUF3QixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUMxQixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsT0FHQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLE1BQU0sR0FJUCxFQUFnQyxFQUFFO1lBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FDaEMsd0JBQXdCLEVBQUUsU0FBUyxFQUNuQyxFQUFFLE1BQU0sRUFBRSxDQUNYLENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUMxQixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxxQkFBcUI7QUFDckIsK0VBQStFO0FBRS9FOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsT0FPQztJQU1ELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUE2QixFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FDaEMsNEJBQTRCLEVBQUUsU0FBUyxFQUN2QyxJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzFCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDNUIsUUFBUSxFQUFFLGlCQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2FBQ3BELENBQUMsQ0FBQztZQUNILFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxPQUFvRjtJQUVwRixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQVUsRUFBZ0MsRUFBRTtZQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQ2xDLDRCQUE0QixFQUFFLEVBQUUsQ0FDakMsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLG9CQUFvQjtBQUNwQiwrRUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUErQixFQUFtQyxFQUFFO1lBQ3JGLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FDaEMsdUJBQXVCLEVBQ3ZCLElBQUksQ0FDTCxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsT0FPQztJQU1ELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUFtQyxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IseUJBQXlCLEVBQUUsRUFBRSxFQUM3QixJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzFCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxPQUFvRjtJQUVwRixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQVUsRUFBZ0MsRUFBRTtZQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQ2xDLHlCQUF5QixFQUFFLEVBQUUsQ0FDOUIsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFkbWluIE11dGF0aW9uIEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gaG9va3MgZm9yIGFkbWluLXJlbGF0ZWQgd3JpdGUgb3BlcmF0aW9ucy5cbiAqIFRoZXNlIGhvb2tzIGhhbmRsZSBhZG1pbiBhY3Rpb25zIGxpa2UgdXNlciBtYW5hZ2VtZW50LCBjb250ZW50IG1vZGVyYXRpb24sXG4gKiBhbmQgYnVzaW5lc3MgdmVyaWZpY2F0aW9uLlxuICpcbiAqIEBtb2R1bGUgYXBpL211dGF0aW9ucy9hZG1pblxuICovXG5cbmltcG9ydCB7XG4gIHVzZU11dGF0aW9uLFxuICBVc2VNdXRhdGlvbk9wdGlvbnMsXG4gIFVzZU11dGF0aW9uUmVzdWx0LFxuICB1c2VRdWVyeUNsaWVudCxcbn0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IEFkbWluVXBkYXRlVXNlclJlcXVlc3QsIEFkbWluQ3JlYXRlQ29udGVudFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBhZG1pbktleXMgfSBmcm9tICcuLi9xdWVyaWVzL2FkbWluJztcbmltcG9ydCB0eXBlIHtcbiAgVXNlclJlc3BvbnNlLFxuICBIdWJSZXNwb25zZSxcbiAgRXZlbnRSZXNwb25zZSxcbiAgQnVzaW5lc3NSZXNwb25zZSxcbiAgTGlicmFyeUNvbnRlbnRSZXNwb25zZSxcbiAgQ3JlYXRlSHViUmVxdWVzdCxcbiAgVXBkYXRlSHViUmVxdWVzdCxcbiAgVXBkYXRlRXZlbnRSZXF1ZXN0LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFUVVFU1QgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRtaW5VcGRhdGVDb250ZW50UmVxdWVzdCBleHRlbmRzIFBhcnRpYWw8QWRtaW5DcmVhdGVDb250ZW50UmVxdWVzdD4ge31cblxuZXhwb3J0IGludGVyZmFjZSBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdCB7XG4gIGlzVmVyaWZpZWQ6IGJvb2xlYW47XG4gIG5vdGVzPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TRSBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkbWluQWN0aW9uUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVTRVIgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVXBkYXRlIHVzZXIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQVVQgL2FwaS92MS9hZG1pbi91c2Vycy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pblVwZGF0ZVVzZXIoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxVc2VyUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVXBkYXRlVXNlclJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PFVzZXJSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5VcGRhdGVVc2VyUmVxdWVzdCB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IEFkbWluVXBkYXRlVXNlclJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8VXNlclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dDxVc2VyUmVzcG9uc2U+KGAvYXBpL3YxL2FkbWluL3VzZXJzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFN1c3BlbmQgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2FwaS92MS9hZG1pbi91c2Vycy97aWR9L3N1c3BlbmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluU3VzcGVuZFVzZXIoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyByZWFzb24/OiBzdHJpbmcgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IHJlYXNvbj86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIHJlYXNvbixcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgcmVhc29uPzogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPEFkbWluQWN0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxBZG1pbkFjdGlvblJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvYWRtaW4vdXNlcnMvJHtpZH0vc3VzcGVuZGAsXG4gICAgICAgIHsgcmVhc29uIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLnVzZXJzLmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEFjdGl2YXRlIHVzZXIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vdXNlcnMve2lkfS9hY3RpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5BY3RpdmF0ZVVzZXIoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoaWQ6IHN0cmluZyk6IFByb21pc2U8QWRtaW5BY3Rpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi91c2Vycy8ke2lkfS9hY3RpdmF0ZWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIGlkKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMudXNlcnMuZGV0YWlsKGlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy51c2Vycy5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxldGUgdXNlciAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IERFTEVURSAvYXBpL3YxL2FkbWluL3VzZXJzL3tpZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluRGVsZXRlVXNlcihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZTxBZG1pbkFjdGlvblJlc3BvbnNlPihgL2FwaS92MS9hZG1pbi91c2Vycy8ke2lkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy51c2Vycy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSFVCIE1VVEFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBodWIgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vaHVic1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5DcmVhdGVIdWIoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxIdWJSZXNwb25zZSwgRXJyb3IsIENyZWF0ZUh1YlJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxIdWJSZXNwb25zZSwgRXJyb3IsIENyZWF0ZUh1YlJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZUh1YlJlcXVlc3QpOiBQcm9taXNlPEh1YlJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8SHViUmVzcG9uc2U+KCcvYXBpL3YxL2FkbWluL2h1YnMnLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5saXN0KCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZGFzaGJvYXJkKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgaHViIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvYWRtaW4vaHVicy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pblVwZGF0ZUh1YihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPEh1YlJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVIdWJSZXF1ZXN0IH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxIdWJSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlSHViUmVxdWVzdCB9PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IFVwZGF0ZUh1YlJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8SHViUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PEh1YlJlc3BvbnNlPihgL2FwaS92MS9hZG1pbi9odWJzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmh1YnMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuaHVicy5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxldGUgaHViIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vaHVicy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkRlbGV0ZUh1YihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZTxBZG1pbkFjdGlvblJlc3BvbnNlPihgL2FwaS92MS9hZG1pbi9odWJzLyR7aWR9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmh1YnMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWRU5UIE1VVEFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFVwZGF0ZSBldmVudCAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL2FkbWluL2V2ZW50cy97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pblVwZGF0ZUV2ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8RXZlbnRSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlRXZlbnRSZXF1ZXN0IH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxFdmVudFJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVFdmVudFJlcXVlc3QgfT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBVcGRhdGVFdmVudFJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8RXZlbnRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQ8RXZlbnRSZXNwb25zZT4oYC9hcGkvdjEvYWRtaW4vZXZlbnRzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmV2ZW50cy5kZXRhaWwodmFyaWFibGVzLmlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5ldmVudHMubGlzdCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQ2FuY2VsIGV2ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL2FkbWluL2V2ZW50cy97aWR9L2NhbmNlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5DYW5jZWxFdmVudChcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IHJlYXNvbj86IHN0cmluZyB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgcmVhc29uPzogc3RyaW5nIH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgcmVhc29uLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICByZWFzb24/OiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8QWRtaW5BY3Rpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEFkbWluQWN0aW9uUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi9ldmVudHMvJHtpZH0vY2FuY2VsYCxcbiAgICAgICAgeyByZWFzb24gfVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuZXZlbnRzLmRldGFpbCh2YXJpYWJsZXMuaWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmV2ZW50cy5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQlVTSU5FU1MgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyaWZ5IGJ1c2luZXNzIChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXBpL3YxL2FkbWluL2J1c2luZXNzZXMve2lkfS92ZXJpZnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUFkbWluVmVyaWZ5QnVzaW5lc3MoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxcbiAgICAgIEJ1c2luZXNzUmVzcG9uc2UsXG4gICAgICBFcnJvcixcbiAgICAgIHsgaWQ6IHN0cmluZzsgZGF0YTogQWRtaW5WZXJpZnlCdXNpbmVzc1JlcXVlc3QgfVxuICAgID4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PFxuICBCdXNpbmVzc1Jlc3BvbnNlLFxuICBFcnJvcixcbiAgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblZlcmlmeUJ1c2luZXNzUmVxdWVzdCB9XG4+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogQWRtaW5WZXJpZnlCdXNpbmVzc1JlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8QnVzaW5lc3NSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEJ1c2luZXNzUmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi9idXNpbmVzc2VzLyR7aWR9L3ZlcmlmeWAsXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoe1xuICAgICAgICBxdWVyeUtleTogYWRtaW5LZXlzLmJ1c2luZXNzZXMuZGV0YWlsKHZhcmlhYmxlcy5pZCksXG4gICAgICB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5idXNpbmVzc2VzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5kYXNoYm9hcmQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBidXNpbmVzcyAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IERFTEVURSAvYXBpL3YxL2FkbWluL2J1c2luZXNzZXMve2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5EZWxldGVCdXNpbmVzcyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEFkbWluQWN0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxBZG1pbkFjdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmRlbGV0ZTxBZG1pbkFjdGlvblJlc3BvbnNlPihcbiAgICAgICAgYC9hcGkvdjEvYWRtaW4vYnVzaW5lc3Nlcy8ke2lkfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmJ1c2luZXNzZXMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogYWRtaW5LZXlzLmRhc2hib2FyZCgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTlRFTlQgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGNvbnRlbnQgKGFkbWluKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvYWRtaW4vY29udGVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5DcmVhdGVDb250ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8TGlicmFyeUNvbnRlbnRSZXNwb25zZSwgRXJyb3IsIEFkbWluQ3JlYXRlQ29udGVudFJlcXVlc3Q+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxMaWJyYXJ5Q29udGVudFJlc3BvbnNlLCBFcnJvciwgQWRtaW5DcmVhdGVDb250ZW50UmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQWRtaW5DcmVhdGVDb250ZW50UmVxdWVzdCk6IFByb21pc2U8TGlicmFyeUNvbnRlbnRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PExpYnJhcnlDb250ZW50UmVzcG9uc2U+KFxuICAgICAgICAnL2FwaS92MS9hZG1pbi9jb250ZW50JyxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuY29udGVudC5saXN0KCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgY29udGVudCAoYWRtaW4pXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL2FkbWluL2NvbnRlbnQve2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRtaW5VcGRhdGVDb250ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8XG4gICAgICBMaWJyYXJ5Q29udGVudFJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGlkOiBzdHJpbmc7IGRhdGE6IEFkbWluVXBkYXRlQ29udGVudFJlcXVlc3QgfVxuICAgID4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PFxuICBMaWJyYXJ5Q29udGVudFJlc3BvbnNlLFxuICBFcnJvcixcbiAgeyBpZDogc3RyaW5nOyBkYXRhOiBBZG1pblVwZGF0ZUNvbnRlbnRSZXF1ZXN0IH1cbj4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBBZG1pblVwZGF0ZUNvbnRlbnRSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPExpYnJhcnlDb250ZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PExpYnJhcnlDb250ZW50UmVzcG9uc2U+KFxuICAgICAgICBgL2FwaS92MS9hZG1pbi9jb250ZW50LyR7aWR9YCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBhZG1pbktleXMuY29udGVudC5kZXRhaWwodmFyaWFibGVzLmlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50Lmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBjb250ZW50IChhZG1pbilcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvYWRtaW4vY29udGVudC97aWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZG1pbkRlbGV0ZUNvbnRlbnQoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxBZG1pbkFjdGlvblJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QWRtaW5BY3Rpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoaWQ6IHN0cmluZyk6IFByb21pc2U8QWRtaW5BY3Rpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5kZWxldGU8QWRtaW5BY3Rpb25SZXNwb25zZT4oXG4gICAgICAgIGAvYXBpL3YxL2FkbWluL2NvbnRlbnQvJHtpZH1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGFkbWluS2V5cy5jb250ZW50Lmxpc3QoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
@@ -7,7 +7,7 @@
7
7
  * @module api/mutations/auth
8
8
  */
9
9
  import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
10
- import type { RegisterRequest, LoginRequest, RefreshTokenRequest, FirebaseAuthRequest, AuthResponse, TokenResponse } from '../types';
10
+ import type { RegisterRequest, LoginRequest, RefreshTokenRequest, FirebaseAuthRequest, AuthResponse, TokenResponse, SendOtpRequest, OtpSentResponse, VerifyOtpRequest } from '../types';
11
11
  /**
12
12
  * Register a new user account
13
13
  *
@@ -265,3 +265,85 @@ export declare function useRefreshAuthToken(options?: Omit<UseMutationOptions<To
265
265
  * @returns TanStack Query mutation result
266
266
  */
267
267
  export declare function useFirebaseAuth(options?: Omit<UseMutationOptions<AuthResponse, Error, FirebaseAuthRequest>, 'mutationFn'>): UseMutationResult<AuthResponse, Error, FirebaseAuthRequest>;
268
+ /**
269
+ * Response type for verify OTP including isNewUser flag
270
+ */
271
+ export type VerifyOtpResponse = AuthResponse & {
272
+ isNewUser: boolean;
273
+ };
274
+ /**
275
+ * Send OTP to phone number
276
+ *
277
+ * @description
278
+ * Sends a verification code to the specified phone number via SMS or voice call.
279
+ * Used for passwordless authentication.
280
+ *
281
+ * @endpoint POST /auth/phone/send-otp
282
+ *
283
+ * @example
284
+ * ```tsx
285
+ * import { useSendOtp } from '@growsober/sdk';
286
+ *
287
+ * function PhoneInputScreen() {
288
+ * const { mutate: sendOtp, isPending, error } = useSendOtp({
289
+ * onSuccess: (data) => {
290
+ * console.log('OTP sent to:', data.phone);
291
+ * navigation.navigate('VerifyOtp', { phone });
292
+ * },
293
+ * onError: (error) => {
294
+ * Alert.alert('Error', error.message);
295
+ * },
296
+ * });
297
+ *
298
+ * const handleSend = () => {
299
+ * sendOtp({ phone: '+1234567890', channel: 'sms' });
300
+ * };
301
+ *
302
+ * return <Button onPress={handleSend} disabled={isPending} />;
303
+ * }
304
+ * ```
305
+ *
306
+ * @param options - TanStack Query mutation options
307
+ * @returns TanStack Query mutation result
308
+ */
309
+ export declare function useSendOtp(options?: Omit<UseMutationOptions<OtpSentResponse, Error, SendOtpRequest>, 'mutationFn'>): UseMutationResult<OtpSentResponse, Error, SendOtpRequest>;
310
+ /**
311
+ * Verify OTP and authenticate
312
+ *
313
+ * @description
314
+ * Verifies the OTP code sent to the phone number and authenticates the user.
315
+ * If the user doesn't exist, a new account is created automatically.
316
+ * Returns authentication tokens and user information.
317
+ *
318
+ * @endpoint POST /auth/phone/verify-otp
319
+ *
320
+ * @example
321
+ * ```tsx
322
+ * import { useVerifyOtp } from '@growsober/sdk';
323
+ *
324
+ * function VerifyOtpScreen({ phone }) {
325
+ * const { mutate: verifyOtp, isPending, error } = useVerifyOtp({
326
+ * onSuccess: async (data) => {
327
+ * await SecureStore.setItemAsync('accessToken', data.accessToken);
328
+ * await SecureStore.setItemAsync('refreshToken', data.refreshToken);
329
+ *
330
+ * if (data.isNewUser) {
331
+ * navigation.navigate('Onboarding');
332
+ * } else {
333
+ * navigation.navigate('Home');
334
+ * }
335
+ * },
336
+ * });
337
+ *
338
+ * const handleVerify = (code: string) => {
339
+ * verifyOtp({ phone, code });
340
+ * };
341
+ *
342
+ * return <OtpInput onComplete={handleVerify} disabled={isPending} />;
343
+ * }
344
+ * ```
345
+ *
346
+ * @param options - TanStack Query mutation options
347
+ * @returns TanStack Query mutation result
348
+ */
349
+ export declare function useVerifyOtp(options?: Omit<UseMutationOptions<VerifyOtpResponse, Error, VerifyOtpRequest>, 'mutationFn'>): UseMutationResult<VerifyOtpResponse, Error, VerifyOtpRequest>;
@@ -12,6 +12,8 @@ exports.useRegister = useRegister;
12
12
  exports.useLogin = useLogin;
13
13
  exports.useRefreshAuthToken = useRefreshAuthToken;
14
14
  exports.useFirebaseAuth = useFirebaseAuth;
15
+ exports.useSendOtp = useSendOtp;
16
+ exports.useVerifyOtp = useVerifyOtp;
15
17
  const react_query_1 = require("@tanstack/react-query");
16
18
  const client_1 = require("../client");
17
19
  const users_1 = require("../queries/users");
@@ -329,4 +331,103 @@ function useFirebaseAuth(options) {
329
331
  ...options,
330
332
  });
331
333
  }
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBMkRILGtDQWtCQztBQXlERCw0QkFrQkM7QUEyRUQsa0RBV0M7QUFzRkQsMENBa0JDO0FBcFZELHVEQUEyRztBQUMzRyxzQ0FBeUM7QUFDekMsNENBQTRDO0FBVTVDLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixPQUFzRjtJQUV0RixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLElBQXFCLEVBQXlCLEVBQUU7WUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFlLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxrRUFBa0U7WUFDbEUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNELG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzREc7QUFDSCxTQUFnQixRQUFRLENBQ3RCLE9BQW1GO0lBRW5GLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBa0IsRUFBeUIsRUFBRTtZQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQWUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxrRUFBa0U7WUFDbEUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNELG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsT0FBMkY7SUFFM0YsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUF5QixFQUEwQixFQUFFO1lBQ3RFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBZ0IsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1GRztBQUNILFNBQWdCLGVBQWUsQ0FDN0IsT0FBMEY7SUFFMUYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUF5QixFQUF5QixFQUFFO1lBQ3JFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBZSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsa0VBQWtFO1lBQ2xFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRCxtREFBbUQ7UUFDckQsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGggTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBob29rcyBmb3IgYXV0aGVudGljYXRpb24tcmVsYXRlZCB3cml0ZSBvcGVyYXRpb25zLlxuICogVGhlc2UgaG9va3MgaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uLCBsb2dpbiwgdG9rZW4gcmVmcmVzaCwgYW5kIEZpcmViYXNlIGF1dGhlbnRpY2F0aW9uLlxuICpcbiAqIEBtb2R1bGUgYXBpL211dGF0aW9ucy9hdXRoXG4gKi9cblxuaW1wb3J0IHsgdXNlTXV0YXRpb24sIFVzZU11dGF0aW9uT3B0aW9ucywgVXNlTXV0YXRpb25SZXN1bHQsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyB1c2VyS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvdXNlcnMnO1xuaW1wb3J0IHR5cGUge1xuICBSZWdpc3RlclJlcXVlc3QsXG4gIExvZ2luUmVxdWVzdCxcbiAgUmVmcmVzaFRva2VuUmVxdWVzdCxcbiAgRmlyZWJhc2VBdXRoUmVxdWVzdCxcbiAgQXV0aFJlc3BvbnNlLFxuICBUb2tlblJlc3BvbnNlLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgdXNlciBhY2NvdW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDcmVhdGVzIGEgbmV3IHVzZXIgYWNjb3VudCB3aXRoIGVtYWlsL3Bob25lIGFuZCBwYXNzd29yZC5cbiAqIFJldHVybnMgYXV0aGVudGljYXRpb24gdG9rZW5zIGFuZCB1c2VyIGluZm9ybWF0aW9uIHVwb24gc3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvcmVnaXN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VSZWdpc3RlciB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBSZWdpc3RlckZvcm0oKSB7XG4gKiAgIGNvbnN0IHsgbXV0YXRlOiByZWdpc3RlciwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlUmVnaXN0ZXIoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIHRva2VucyBzZWN1cmVseVxuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGRhdGEuYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdPbmJvYXJkaW5nJyk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIEFsZXJ0LmFsZXJ0KCdSZWdpc3RyYXRpb24gZmFpbGVkJywgZXJyb3IubWVzc2FnZSk7XG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKlxuICogICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG4gKiAgICAgcmVnaXN0ZXIoe1xuICogICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAqICAgICAgIHBhc3N3b3JkOiAnU2VjdXJlUGFzc3dvcmQxMjMhJyxcbiAqICAgICAgIG5hbWU6ICdKb2huIERvZScsXG4gKiAgICAgfSk7XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4gPEJ1dHRvbiBvblByZXNzPXtoYW5kbGVTdWJtaXR9IGRpc2FibGVkPXtpc1BlbmRpbmd9IC8+O1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QXV0aFJlc3BvbnNlLCBFcnJvciwgUmVnaXN0ZXJSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QXV0aFJlc3BvbnNlLCBFcnJvciwgUmVnaXN0ZXJSZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBSZWdpc3RlclJlcXVlc3QpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEF1dGhSZXNwb25zZT4oJy9hdXRoL3JlZ2lzdGVyJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBjdXJyZW50IHVzZXIgcXVlcnkgdG8gdHJpZ2dlciByZWZldGNoIHdpdGggbmV3IHRva2VuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBMb2dpbiB3aXRoIGVtYWlsL3Bob25lIGFuZCBwYXNzd29yZFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXV0aGVudGljYXRlcyBhbiBleGlzdGluZyB1c2VyIHdpdGggdGhlaXIgY3JlZGVudGlhbHMuXG4gKiBSZXR1cm5zIGF1dGhlbnRpY2F0aW9uIHRva2VucyBhbmQgdXNlciBpbmZvcm1hdGlvbiB1cG9uIHN1Y2Nlc3NmdWwgbG9naW4uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvbG9naW5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VMb2dpbiB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBMb2dpbkZvcm0oKSB7XG4gKiAgIGNvbnN0IHsgbXV0YXRlOiBsb2dpbiwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlTG9naW4oe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIHRva2VucyBzZWN1cmVseVxuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGRhdGEuYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKlxuICogICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG4gKiAgICAgbG9naW4oe1xuICogICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAqICAgICAgIHBhc3N3b3JkOiAnU2VjdXJlUGFzc3dvcmQxMjMhJyxcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG4gKiAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgbmFtZT1cImVtYWlsXCIgLz5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIiAvPlxuICogICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9e2lzUGVuZGluZ30+XG4gKiAgICAgICAgIHtpc1BlbmRpbmcgPyAnTG9nZ2luZyBpbi4uLicgOiAnTG9naW4nfVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgICB7ZXJyb3IgJiYgPHAgY2xhc3NOYW1lPVwiZXJyb3JcIj57ZXJyb3IubWVzc2FnZX08L3A+fVxuICogICAgIDwvZm9ybT5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBMb2dpbiB3aXRoIHBob25lIG51bWJlcjpcbiAqIGBgYHRzeFxuICogbG9naW4oe1xuICogICBwaG9uZTogJysxMjM0NTY3ODkwJyxcbiAqICAgcGFzc3dvcmQ6ICdTZWN1cmVQYXNzd29yZDEyMyEnLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTG9naW4oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxBdXRoUmVzcG9uc2UsIEVycm9yLCBMb2dpblJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBdXRoUmVzcG9uc2UsIEVycm9yLCBMb2dpblJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IExvZ2luUmVxdWVzdCk6IFByb21pc2U8QXV0aFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QXV0aFJlc3BvbnNlPignL2F1dGgvbG9naW4nLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBJbnZhbGlkYXRlIGN1cnJlbnQgdXNlciBxdWVyeSB0byB0cmlnZ2VyIHJlZmV0Y2ggd2l0aCBuZXcgdG9rZW5cbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHVzZXJLZXlzLm1lKCkgfSk7XG4gICAgICAvLyBVc2VyJ3Mgb25TdWNjZXNzIGlzIGhhbmRsZWQgYnkgc3ByZWFkaW5nIG9wdGlvbnNcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggYWNjZXNzIHRva2VuIHVzaW5nIHJlZnJlc2ggdG9rZW5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE9idGFpbnMgYSBuZXcgYWNjZXNzIHRva2VuIHVzaW5nIGEgdmFsaWQgcmVmcmVzaCB0b2tlbi5cbiAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjZXNzIHRva2VuIGV4cGlyZXMuXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvcmVmcmVzaFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZVJlZnJlc2hBdXRoVG9rZW4gfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gdXNlVG9rZW5SZWZyZXNoKCkge1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiByZWZyZXNoVG9rZW4gfSA9IHVzZVJlZnJlc2hBdXRoVG9rZW4oKTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVRva2VuRXhwaXJlZCA9IGFzeW5jICgpID0+IHtcbiAqICAgICBjb25zdCBzdG9yZWRSZWZyZXNoVG9rZW4gPSBhd2FpdCBTZWN1cmVTdG9yZS5nZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicpO1xuICpcbiAqICAgICBpZiAoIXN0b3JlZFJlZnJlc2hUb2tlbikge1xuICogICAgICAgbmF2aWdhdGlvbi5uYXZpZ2F0ZSgnTG9naW4nKTtcbiAqICAgICAgIHJldHVybjtcbiAqICAgICB9XG4gKlxuICogICAgIHRyeSB7XG4gKiAgICAgICBjb25zdCB7IGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW46IG5ld1JlZnJlc2hUb2tlbiB9ID0gYXdhaXQgcmVmcmVzaFRva2VuKHtcbiAqICAgICAgICAgcmVmcmVzaFRva2VuOiBzdG9yZWRSZWZyZXNoVG9rZW4sXG4gKiAgICAgICB9KTtcbiAqXG4gKiAgICAgICAvLyBTdG9yZSBuZXcgdG9rZW5zXG4gKiAgICAgICBhd2FpdCBTZWN1cmVTdG9yZS5zZXRJdGVtQXN5bmMoJ2FjY2Vzc1Rva2VuJywgYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBuZXdSZWZyZXNoVG9rZW4pO1xuICogICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgICAvLyBSZWZyZXNoIHRva2VuIGlzIGludmFsaWQgb3IgZXhwaXJlZFxuICogICAgICAgbmF2aWdhdGlvbi5uYXZpZ2F0ZSgnTG9naW4nKTtcbiAqICAgICB9XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4geyBoYW5kbGVUb2tlbkV4cGlyZWQgfTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBJbnRlZ3JhdGUgd2l0aCBTREsgY29uZmlndXJhdGlvbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgY29uZmlndXJlU0RLIH0gZnJvbSAnQGdyb3dzb2Jlci9zZGsnO1xuICpcbiAqIGNvbmZpZ3VyZVNESyh7XG4gKiAgIGJhc2VVUkw6ICdodHRwczovL2FwaS5ncm93c29iZXIuYXBwJyxcbiAqICAgZ2V0QWNjZXNzVG9rZW46IGFzeW5jICgpID0+IHtcbiAqICAgICByZXR1cm4gYXdhaXQgU2VjdXJlU3RvcmUuZ2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicpO1xuICogICB9LFxuICogICByZWZyZXNoQWNjZXNzVG9rZW46IGFzeW5jICgpID0+IHtcbiAqICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBhd2FpdCBTZWN1cmVTdG9yZS5nZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicpO1xuICogICAgIGNvbnN0IHsgYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbjogbmV3UmVmcmVzaFRva2VuIH0gPSBhd2FpdCBmZXRjaCgnL2F1dGgvcmVmcmVzaCcsIHtcbiAqICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICogICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyByZWZyZXNoVG9rZW4gfSksXG4gKiAgICAgfSkudGhlbihyID0+IHIuanNvbigpKTtcbiAqXG4gKiAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGFjY2Vzc1Rva2VuKTtcbiAqICAgICBhd2FpdCBTZWN1cmVTdG9yZS5zZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicsIG5ld1JlZnJlc2hUb2tlbik7XG4gKlxuICogICAgIHJldHVybiBhY2Nlc3NUb2tlbjtcbiAqICAgfSxcbiAqICAgb25VbmF1dGhvcml6ZWQ6ICgpID0+IHtcbiAqICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdMb2dpbicpO1xuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVmcmVzaEF1dGhUb2tlbihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPFRva2VuUmVzcG9uc2UsIEVycm9yLCBSZWZyZXNoVG9rZW5SZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VG9rZW5SZXNwb25zZSwgRXJyb3IsIFJlZnJlc2hUb2tlblJlcXVlc3Q+IHtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogUmVmcmVzaFRva2VuUmVxdWVzdCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFRva2VuUmVzcG9uc2U+KCcvYXV0aC9yZWZyZXNoJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEF1dGhlbnRpY2F0ZSB3aXRoIEZpcmViYXNlIElEIHRva2VuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBdXRoZW50aWNhdGVzIGEgdXNlciB1c2luZyBhIEZpcmViYXNlIElEIHRva2VuLlxuICogQ3JlYXRlcyBhIG5ldyB1c2VyIGFjY291bnQgaWYgb25lIGRvZXNuJ3QgZXhpc3QsIG9yIGxvZ3MgaW4gYW4gZXhpc3RpbmcgdXNlci5cbiAqIFJldHVybnMgR3Jvd1NvYmVyIGF1dGhlbnRpY2F0aW9uIHRva2VucyBhbmQgdXNlciBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXV0aC9maXJlYmFzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZUZpcmViYXNlQXV0aCB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqIGltcG9ydCB7IHNpZ25JbldpdGhQaG9uZU51bWJlciB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuICpcbiAqIGZ1bmN0aW9uIFBob25lQXV0aFNjcmVlbigpIHtcbiAqICAgY29uc3QgeyBtdXRhdGU6IGZpcmViYXNlQXV0aCwgaXNQZW5kaW5nIH0gPSB1c2VGaXJlYmFzZUF1dGgoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIEdyb3dTb2JlciB0b2tlbnNcbiAqICAgICAgIGF3YWl0IFNlY3VyZVN0b3JlLnNldEl0ZW1Bc3luYygnYWNjZXNzVG9rZW4nLCBkYXRhLmFjY2Vzc1Rva2VuKTtcbiAqICAgICAgIGF3YWl0IFNlY3VyZVN0b3JlLnNldEl0ZW1Bc3luYygncmVmcmVzaFRva2VuJywgZGF0YS5yZWZyZXNoVG9rZW4pO1xuICpcbiAqICAgICAgIGlmIChkYXRhLnVzZXIub25ib2FyZGluZ0NvbXBsZXRlZCkge1xuICogICAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgICB9IGVsc2Uge1xuICogICAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdPbmJvYXJkaW5nJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIEFsZXJ0LmFsZXJ0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQnLCBlcnJvci5tZXNzYWdlKTtcbiAqICAgICB9LFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVBob25lQXV0aCA9IGFzeW5jIChwaG9uZU51bWJlcjogc3RyaW5nKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgIC8vIEZpcmViYXNlIGF1dGhlbnRpY2F0aW9uIGZsb3dcbiAqICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbiA9IGF3YWl0IHNpZ25JbldpdGhQaG9uZU51bWJlcihhdXRoLCBwaG9uZU51bWJlcik7XG4gKiAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgcHJvbXB0VXNlckZvckNvZGUoKTsgLy8gWW91ciBVSSB0byBnZXQgdmVyaWZpY2F0aW9uIGNvZGVcbiAqICAgICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBhd2FpdCBjb25maXJtYXRpb24uY29uZmlybShjb2RlKTtcbiAqXG4gKiAgICAgICAvLyBHZXQgRmlyZWJhc2UgSUQgdG9rZW5cbiAqICAgICAgIGNvbnN0IGlkVG9rZW4gPSBhd2FpdCBjcmVkZW50aWFsLnVzZXIuZ2V0SWRUb2tlbigpO1xuICpcbiAqICAgICAgIC8vIEF1dGhlbnRpY2F0ZSB3aXRoIEdyb3dTb2JlciBiYWNrZW5kXG4gKiAgICAgICBmaXJlYmFzZUF1dGgoeyBpZFRva2VuIH0pO1xuICogICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgICBjb25zb2xlLmVycm9yKCdQaG9uZSBhdXRoIGVycm9yOicsIGVycm9yKTtcbiAqICAgICB9XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4gPFBob25lSW5wdXQgb25TdWJtaXQ9e2hhbmRsZVBob25lQXV0aH0gZGlzYWJsZWQ9e2lzUGVuZGluZ30gLz47XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogV2l0aCBHb29nbGUgU2lnbi1JbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgR29vZ2xlU2lnbmluIH0gZnJvbSAnQHJlYWN0LW5hdGl2ZS1nb29nbGUtc2lnbmluL2dvb2dsZS1zaWduaW4nO1xuICpcbiAqIGNvbnN0IGhhbmRsZUdvb2dsZVNpZ25JbiA9IGFzeW5jICgpID0+IHtcbiAqICAgY29uc3QgeyBpZFRva2VuIH0gPSBhd2FpdCBHb29nbGVTaWduaW4uc2lnbkluKCk7XG4gKiAgIGZpcmViYXNlQXV0aCh7IGlkVG9rZW4gfSk7XG4gKiB9O1xuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggQXBwbGUgU2lnbi1JbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0ICogYXMgQXBwbGVBdXRoZW50aWNhdGlvbiBmcm9tICdleHBvLWFwcGxlLWF1dGhlbnRpY2F0aW9uJztcbiAqXG4gKiBjb25zdCBoYW5kbGVBcHBsZVNpZ25JbiA9IGFzeW5jICgpID0+IHtcbiAqICAgY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IEFwcGxlQXV0aGVudGljYXRpb24uc2lnbkluQXN5bmMoe1xuICogICAgIHJlcXVlc3RlZFNjb3BlczogW1xuICogICAgICAgQXBwbGVBdXRoZW50aWNhdGlvbi5BcHBsZUF1dGhlbnRpY2F0aW9uU2NvcGUuRlVMTF9OQU1FLFxuICogICAgICAgQXBwbGVBdXRoZW50aWNhdGlvbi5BcHBsZUF1dGhlbnRpY2F0aW9uU2NvcGUuRU1BSUwsXG4gKiAgICAgXSxcbiAqICAgfSk7XG4gKiAgIGZpcmViYXNlQXV0aCh7IGlkVG9rZW46IGNyZWRlbnRpYWwuaWRlbnRpdHlUb2tlbiB9KTtcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlyZWJhc2VBdXRoKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QXV0aFJlc3BvbnNlLCBFcnJvciwgRmlyZWJhc2VBdXRoUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEF1dGhSZXNwb25zZSwgRXJyb3IsIEZpcmViYXNlQXV0aFJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IEZpcmViYXNlQXV0aFJlcXVlc3QpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEF1dGhSZXNwb25zZT4oJy9hdXRoL2ZpcmViYXNlJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBjdXJyZW50IHVzZXIgcXVlcnkgdG8gdHJpZ2dlciByZWZldGNoIHdpdGggbmV3IHRva2VuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
334
+ /**
335
+ * Send OTP to phone number
336
+ *
337
+ * @description
338
+ * Sends a verification code to the specified phone number via SMS or voice call.
339
+ * Used for passwordless authentication.
340
+ *
341
+ * @endpoint POST /auth/phone/send-otp
342
+ *
343
+ * @example
344
+ * ```tsx
345
+ * import { useSendOtp } from '@growsober/sdk';
346
+ *
347
+ * function PhoneInputScreen() {
348
+ * const { mutate: sendOtp, isPending, error } = useSendOtp({
349
+ * onSuccess: (data) => {
350
+ * console.log('OTP sent to:', data.phone);
351
+ * navigation.navigate('VerifyOtp', { phone });
352
+ * },
353
+ * onError: (error) => {
354
+ * Alert.alert('Error', error.message);
355
+ * },
356
+ * });
357
+ *
358
+ * const handleSend = () => {
359
+ * sendOtp({ phone: '+1234567890', channel: 'sms' });
360
+ * };
361
+ *
362
+ * return <Button onPress={handleSend} disabled={isPending} />;
363
+ * }
364
+ * ```
365
+ *
366
+ * @param options - TanStack Query mutation options
367
+ * @returns TanStack Query mutation result
368
+ */
369
+ function useSendOtp(options) {
370
+ return (0, react_query_1.useMutation)({
371
+ mutationFn: async (data) => {
372
+ const client = (0, client_1.getApiClient)();
373
+ const response = await client.post('/auth/phone/send-otp', data);
374
+ return response.data;
375
+ },
376
+ ...options,
377
+ });
378
+ }
379
+ /**
380
+ * Verify OTP and authenticate
381
+ *
382
+ * @description
383
+ * Verifies the OTP code sent to the phone number and authenticates the user.
384
+ * If the user doesn't exist, a new account is created automatically.
385
+ * Returns authentication tokens and user information.
386
+ *
387
+ * @endpoint POST /auth/phone/verify-otp
388
+ *
389
+ * @example
390
+ * ```tsx
391
+ * import { useVerifyOtp } from '@growsober/sdk';
392
+ *
393
+ * function VerifyOtpScreen({ phone }) {
394
+ * const { mutate: verifyOtp, isPending, error } = useVerifyOtp({
395
+ * onSuccess: async (data) => {
396
+ * await SecureStore.setItemAsync('accessToken', data.accessToken);
397
+ * await SecureStore.setItemAsync('refreshToken', data.refreshToken);
398
+ *
399
+ * if (data.isNewUser) {
400
+ * navigation.navigate('Onboarding');
401
+ * } else {
402
+ * navigation.navigate('Home');
403
+ * }
404
+ * },
405
+ * });
406
+ *
407
+ * const handleVerify = (code: string) => {
408
+ * verifyOtp({ phone, code });
409
+ * };
410
+ *
411
+ * return <OtpInput onComplete={handleVerify} disabled={isPending} />;
412
+ * }
413
+ * ```
414
+ *
415
+ * @param options - TanStack Query mutation options
416
+ * @returns TanStack Query mutation result
417
+ */
418
+ function useVerifyOtp(options) {
419
+ const queryClient = (0, react_query_1.useQueryClient)();
420
+ return (0, react_query_1.useMutation)({
421
+ mutationFn: async (data) => {
422
+ const client = (0, client_1.getApiClient)();
423
+ const response = await client.post('/auth/phone/verify-otp', data);
424
+ return response.data;
425
+ },
426
+ onSuccess: (data, variables, context) => {
427
+ // Invalidate current user query to trigger refetch with new token
428
+ queryClient.invalidateQueries({ queryKey: users_1.userKeys.me() });
429
+ },
430
+ ...options,
431
+ });
432
+ }
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBOERILGtDQWtCQztBQXlERCw0QkFrQkM7QUEyRUQsa0RBV0M7QUFzRkQsMENBa0JDO0FBMENELGdDQVdDO0FBeUNELG9DQWlCQztBQXRjRCx1REFBMkc7QUFDM0csc0NBQXlDO0FBQ3pDLDRDQUE0QztBQWE1QywrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsT0FBc0Y7SUFFdEYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFxQixFQUF5QixFQUFFO1lBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBZSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN6RSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdEMsa0VBQWtFO1lBQ2xFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxnQkFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRCxtREFBbUQ7UUFDckQsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Q0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNDRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsT0FBNEY7SUFFNUYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFzQixFQUE4QixFQUFFO1lBQ3ZFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBb0Isd0JBQXdCLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEYsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLGtFQUFrRTtZQUNsRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF1dGggTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBob29rcyBmb3IgYXV0aGVudGljYXRpb24tcmVsYXRlZCB3cml0ZSBvcGVyYXRpb25zLlxuICogVGhlc2UgaG9va3MgaGFuZGxlIHVzZXIgcmVnaXN0cmF0aW9uLCBsb2dpbiwgdG9rZW4gcmVmcmVzaCwgYW5kIEZpcmViYXNlIGF1dGhlbnRpY2F0aW9uLlxuICpcbiAqIEBtb2R1bGUgYXBpL211dGF0aW9ucy9hdXRoXG4gKi9cblxuaW1wb3J0IHsgdXNlTXV0YXRpb24sIFVzZU11dGF0aW9uT3B0aW9ucywgVXNlTXV0YXRpb25SZXN1bHQsIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyB1c2VyS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvdXNlcnMnO1xuaW1wb3J0IHR5cGUge1xuICBSZWdpc3RlclJlcXVlc3QsXG4gIExvZ2luUmVxdWVzdCxcbiAgUmVmcmVzaFRva2VuUmVxdWVzdCxcbiAgRmlyZWJhc2VBdXRoUmVxdWVzdCxcbiAgQXV0aFJlc3BvbnNlLFxuICBUb2tlblJlc3BvbnNlLFxuICBTZW5kT3RwUmVxdWVzdCxcbiAgT3RwU2VudFJlc3BvbnNlLFxuICBWZXJpZnlPdHBSZXF1ZXN0LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgdXNlciBhY2NvdW50XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDcmVhdGVzIGEgbmV3IHVzZXIgYWNjb3VudCB3aXRoIGVtYWlsL3Bob25lIGFuZCBwYXNzd29yZC5cbiAqIFJldHVybnMgYXV0aGVudGljYXRpb24gdG9rZW5zIGFuZCB1c2VyIGluZm9ybWF0aW9uIHVwb24gc3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvcmVnaXN0ZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VSZWdpc3RlciB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBSZWdpc3RlckZvcm0oKSB7XG4gKiAgIGNvbnN0IHsgbXV0YXRlOiByZWdpc3RlciwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlUmVnaXN0ZXIoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIHRva2VucyBzZWN1cmVseVxuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGRhdGEuYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdPbmJvYXJkaW5nJyk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIEFsZXJ0LmFsZXJ0KCdSZWdpc3RyYXRpb24gZmFpbGVkJywgZXJyb3IubWVzc2FnZSk7XG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKlxuICogICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG4gKiAgICAgcmVnaXN0ZXIoe1xuICogICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAqICAgICAgIHBhc3N3b3JkOiAnU2VjdXJlUGFzc3dvcmQxMjMhJyxcbiAqICAgICAgIG5hbWU6ICdKb2huIERvZScsXG4gKiAgICAgfSk7XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4gPEJ1dHRvbiBvblByZXNzPXtoYW5kbGVTdWJtaXR9IGRpc2FibGVkPXtpc1BlbmRpbmd9IC8+O1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKiBAcmV0dXJucyBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiByZXN1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QXV0aFJlc3BvbnNlLCBFcnJvciwgUmVnaXN0ZXJSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8QXV0aFJlc3BvbnNlLCBFcnJvciwgUmVnaXN0ZXJSZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBSZWdpc3RlclJlcXVlc3QpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEF1dGhSZXNwb25zZT4oJy9hdXRoL3JlZ2lzdGVyJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBjdXJyZW50IHVzZXIgcXVlcnkgdG8gdHJpZ2dlciByZWZldGNoIHdpdGggbmV3IHRva2VuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBMb2dpbiB3aXRoIGVtYWlsL3Bob25lIGFuZCBwYXNzd29yZFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQXV0aGVudGljYXRlcyBhbiBleGlzdGluZyB1c2VyIHdpdGggdGhlaXIgY3JlZGVudGlhbHMuXG4gKiBSZXR1cm5zIGF1dGhlbnRpY2F0aW9uIHRva2VucyBhbmQgdXNlciBpbmZvcm1hdGlvbiB1cG9uIHN1Y2Nlc3NmdWwgbG9naW4uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvbG9naW5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyB1c2VMb2dpbiB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBMb2dpbkZvcm0oKSB7XG4gKiAgIGNvbnN0IHsgbXV0YXRlOiBsb2dpbiwgaXNQZW5kaW5nLCBlcnJvciB9ID0gdXNlTG9naW4oe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIHRva2VucyBzZWN1cmVseVxuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGRhdGEuYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gKiAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKlxuICogICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XG4gKiAgICAgbG9naW4oe1xuICogICAgICAgZW1haWw6ICd1c2VyQGV4YW1wbGUuY29tJyxcbiAqICAgICAgIHBhc3N3b3JkOiAnU2VjdXJlUGFzc3dvcmQxMjMhJyxcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0+XG4gKiAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgbmFtZT1cImVtYWlsXCIgLz5cbiAqICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBuYW1lPVwicGFzc3dvcmRcIiAvPlxuICogICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgZGlzYWJsZWQ9e2lzUGVuZGluZ30+XG4gKiAgICAgICAgIHtpc1BlbmRpbmcgPyAnTG9nZ2luZyBpbi4uLicgOiAnTG9naW4nfVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgICB7ZXJyb3IgJiYgPHAgY2xhc3NOYW1lPVwiZXJyb3JcIj57ZXJyb3IubWVzc2FnZX08L3A+fVxuICogICAgIDwvZm9ybT5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBMb2dpbiB3aXRoIHBob25lIG51bWJlcjpcbiAqIGBgYHRzeFxuICogbG9naW4oe1xuICogICBwaG9uZTogJysxMjM0NTY3ODkwJyxcbiAqICAgcGFzc3dvcmQ6ICdTZWN1cmVQYXNzd29yZDEyMyEnLFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTG9naW4oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxBdXRoUmVzcG9uc2UsIEVycm9yLCBMb2dpblJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxBdXRoUmVzcG9uc2UsIEVycm9yLCBMb2dpblJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IExvZ2luUmVxdWVzdCk6IFByb21pc2U8QXV0aFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8QXV0aFJlc3BvbnNlPignL2F1dGgvbG9naW4nLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBJbnZhbGlkYXRlIGN1cnJlbnQgdXNlciBxdWVyeSB0byB0cmlnZ2VyIHJlZmV0Y2ggd2l0aCBuZXcgdG9rZW5cbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHVzZXJLZXlzLm1lKCkgfSk7XG4gICAgICAvLyBVc2VyJ3Mgb25TdWNjZXNzIGlzIGhhbmRsZWQgYnkgc3ByZWFkaW5nIG9wdGlvbnNcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlZnJlc2ggYWNjZXNzIHRva2VuIHVzaW5nIHJlZnJlc2ggdG9rZW5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE9idGFpbnMgYSBuZXcgYWNjZXNzIHRva2VuIHVzaW5nIGEgdmFsaWQgcmVmcmVzaCB0b2tlbi5cbiAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgYWNjZXNzIHRva2VuIGV4cGlyZXMuXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvcmVmcmVzaFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZVJlZnJlc2hBdXRoVG9rZW4gfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gdXNlVG9rZW5SZWZyZXNoKCkge1xuICogICBjb25zdCB7IG11dGF0ZUFzeW5jOiByZWZyZXNoVG9rZW4gfSA9IHVzZVJlZnJlc2hBdXRoVG9rZW4oKTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVRva2VuRXhwaXJlZCA9IGFzeW5jICgpID0+IHtcbiAqICAgICBjb25zdCBzdG9yZWRSZWZyZXNoVG9rZW4gPSBhd2FpdCBTZWN1cmVTdG9yZS5nZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicpO1xuICpcbiAqICAgICBpZiAoIXN0b3JlZFJlZnJlc2hUb2tlbikge1xuICogICAgICAgbmF2aWdhdGlvbi5uYXZpZ2F0ZSgnTG9naW4nKTtcbiAqICAgICAgIHJldHVybjtcbiAqICAgICB9XG4gKlxuICogICAgIHRyeSB7XG4gKiAgICAgICBjb25zdCB7IGFjY2Vzc1Rva2VuLCByZWZyZXNoVG9rZW46IG5ld1JlZnJlc2hUb2tlbiB9ID0gYXdhaXQgcmVmcmVzaFRva2VuKHtcbiAqICAgICAgICAgcmVmcmVzaFRva2VuOiBzdG9yZWRSZWZyZXNoVG9rZW4sXG4gKiAgICAgICB9KTtcbiAqXG4gKiAgICAgICAvLyBTdG9yZSBuZXcgdG9rZW5zXG4gKiAgICAgICBhd2FpdCBTZWN1cmVTdG9yZS5zZXRJdGVtQXN5bmMoJ2FjY2Vzc1Rva2VuJywgYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBuZXdSZWZyZXNoVG9rZW4pO1xuICogICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgICAvLyBSZWZyZXNoIHRva2VuIGlzIGludmFsaWQgb3IgZXhwaXJlZFxuICogICAgICAgbmF2aWdhdGlvbi5uYXZpZ2F0ZSgnTG9naW4nKTtcbiAqICAgICB9XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4geyBoYW5kbGVUb2tlbkV4cGlyZWQgfTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBJbnRlZ3JhdGUgd2l0aCBTREsgY29uZmlndXJhdGlvbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgY29uZmlndXJlU0RLIH0gZnJvbSAnQGdyb3dzb2Jlci9zZGsnO1xuICpcbiAqIGNvbmZpZ3VyZVNESyh7XG4gKiAgIGJhc2VVUkw6ICdodHRwczovL2FwaS5ncm93c29iZXIuYXBwJyxcbiAqICAgZ2V0QWNjZXNzVG9rZW46IGFzeW5jICgpID0+IHtcbiAqICAgICByZXR1cm4gYXdhaXQgU2VjdXJlU3RvcmUuZ2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicpO1xuICogICB9LFxuICogICByZWZyZXNoQWNjZXNzVG9rZW46IGFzeW5jICgpID0+IHtcbiAqICAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBhd2FpdCBTZWN1cmVTdG9yZS5nZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicpO1xuICogICAgIGNvbnN0IHsgYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbjogbmV3UmVmcmVzaFRva2VuIH0gPSBhd2FpdCBmZXRjaCgnL2F1dGgvcmVmcmVzaCcsIHtcbiAqICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICogICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyByZWZyZXNoVG9rZW4gfSksXG4gKiAgICAgfSkudGhlbihyID0+IHIuanNvbigpKTtcbiAqXG4gKiAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGFjY2Vzc1Rva2VuKTtcbiAqICAgICBhd2FpdCBTZWN1cmVTdG9yZS5zZXRJdGVtQXN5bmMoJ3JlZnJlc2hUb2tlbicsIG5ld1JlZnJlc2hUb2tlbik7XG4gKlxuICogICAgIHJldHVybiBhY2Nlc3NUb2tlbjtcbiAqICAgfSxcbiAqICAgb25VbmF1dGhvcml6ZWQ6ICgpID0+IHtcbiAqICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdMb2dpbicpO1xuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVmcmVzaEF1dGhUb2tlbihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPFRva2VuUmVzcG9uc2UsIEVycm9yLCBSZWZyZXNoVG9rZW5SZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8VG9rZW5SZXNwb25zZSwgRXJyb3IsIFJlZnJlc2hUb2tlblJlcXVlc3Q+IHtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogUmVmcmVzaFRva2VuUmVxdWVzdCk6IFByb21pc2U8VG9rZW5SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PFRva2VuUmVzcG9uc2U+KCcvYXV0aC9yZWZyZXNoJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEF1dGhlbnRpY2F0ZSB3aXRoIEZpcmViYXNlIElEIHRva2VuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBdXRoZW50aWNhdGVzIGEgdXNlciB1c2luZyBhIEZpcmViYXNlIElEIHRva2VuLlxuICogQ3JlYXRlcyBhIG5ldyB1c2VyIGFjY291bnQgaWYgb25lIGRvZXNuJ3QgZXhpc3QsIG9yIGxvZ3MgaW4gYW4gZXhpc3RpbmcgdXNlci5cbiAqIFJldHVybnMgR3Jvd1NvYmVyIGF1dGhlbnRpY2F0aW9uIHRva2VucyBhbmQgdXNlciBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXV0aC9maXJlYmFzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZUZpcmViYXNlQXV0aCB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqIGltcG9ydCB7IHNpZ25JbldpdGhQaG9uZU51bWJlciB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuICpcbiAqIGZ1bmN0aW9uIFBob25lQXV0aFNjcmVlbigpIHtcbiAqICAgY29uc3QgeyBtdXRhdGU6IGZpcmViYXNlQXV0aCwgaXNQZW5kaW5nIH0gPSB1c2VGaXJlYmFzZUF1dGgoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIC8vIFN0b3JlIEdyb3dTb2JlciB0b2tlbnNcbiAqICAgICAgIGF3YWl0IFNlY3VyZVN0b3JlLnNldEl0ZW1Bc3luYygnYWNjZXNzVG9rZW4nLCBkYXRhLmFjY2Vzc1Rva2VuKTtcbiAqICAgICAgIGF3YWl0IFNlY3VyZVN0b3JlLnNldEl0ZW1Bc3luYygncmVmcmVzaFRva2VuJywgZGF0YS5yZWZyZXNoVG9rZW4pO1xuICpcbiAqICAgICAgIGlmIChkYXRhLnVzZXIub25ib2FyZGluZ0NvbXBsZXRlZCkge1xuICogICAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdIb21lJyk7XG4gKiAgICAgICB9IGVsc2Uge1xuICogICAgICAgICBuYXZpZ2F0aW9uLm5hdmlnYXRlKCdPbmJvYXJkaW5nJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIEFsZXJ0LmFsZXJ0KCdBdXRoZW50aWNhdGlvbiBmYWlsZWQnLCBlcnJvci5tZXNzYWdlKTtcbiAqICAgICB9LFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVBob25lQXV0aCA9IGFzeW5jIChwaG9uZU51bWJlcjogc3RyaW5nKSA9PiB7XG4gKiAgICAgdHJ5IHtcbiAqICAgICAgIC8vIEZpcmViYXNlIGF1dGhlbnRpY2F0aW9uIGZsb3dcbiAqICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvbiA9IGF3YWl0IHNpZ25JbldpdGhQaG9uZU51bWJlcihhdXRoLCBwaG9uZU51bWJlcik7XG4gKiAgICAgICBjb25zdCBjb2RlID0gYXdhaXQgcHJvbXB0VXNlckZvckNvZGUoKTsgLy8gWW91ciBVSSB0byBnZXQgdmVyaWZpY2F0aW9uIGNvZGVcbiAqICAgICAgIGNvbnN0IGNyZWRlbnRpYWwgPSBhd2FpdCBjb25maXJtYXRpb24uY29uZmlybShjb2RlKTtcbiAqXG4gKiAgICAgICAvLyBHZXQgRmlyZWJhc2UgSUQgdG9rZW5cbiAqICAgICAgIGNvbnN0IGlkVG9rZW4gPSBhd2FpdCBjcmVkZW50aWFsLnVzZXIuZ2V0SWRUb2tlbigpO1xuICpcbiAqICAgICAgIC8vIEF1dGhlbnRpY2F0ZSB3aXRoIEdyb3dTb2JlciBiYWNrZW5kXG4gKiAgICAgICBmaXJlYmFzZUF1dGgoeyBpZFRva2VuIH0pO1xuICogICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgICAgICBjb25zb2xlLmVycm9yKCdQaG9uZSBhdXRoIGVycm9yOicsIGVycm9yKTtcbiAqICAgICB9XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4gPFBob25lSW5wdXQgb25TdWJtaXQ9e2hhbmRsZVBob25lQXV0aH0gZGlzYWJsZWQ9e2lzUGVuZGluZ30gLz47XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogV2l0aCBHb29nbGUgU2lnbi1JbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgR29vZ2xlU2lnbmluIH0gZnJvbSAnQHJlYWN0LW5hdGl2ZS1nb29nbGUtc2lnbmluL2dvb2dsZS1zaWduaW4nO1xuICpcbiAqIGNvbnN0IGhhbmRsZUdvb2dsZVNpZ25JbiA9IGFzeW5jICgpID0+IHtcbiAqICAgY29uc3QgeyBpZFRva2VuIH0gPSBhd2FpdCBHb29nbGVTaWduaW4uc2lnbkluKCk7XG4gKiAgIGZpcmViYXNlQXV0aCh7IGlkVG9rZW4gfSk7XG4gKiB9O1xuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggQXBwbGUgU2lnbi1JbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0ICogYXMgQXBwbGVBdXRoZW50aWNhdGlvbiBmcm9tICdleHBvLWFwcGxlLWF1dGhlbnRpY2F0aW9uJztcbiAqXG4gKiBjb25zdCBoYW5kbGVBcHBsZVNpZ25JbiA9IGFzeW5jICgpID0+IHtcbiAqICAgY29uc3QgY3JlZGVudGlhbCA9IGF3YWl0IEFwcGxlQXV0aGVudGljYXRpb24uc2lnbkluQXN5bmMoe1xuICogICAgIHJlcXVlc3RlZFNjb3BlczogW1xuICogICAgICAgQXBwbGVBdXRoZW50aWNhdGlvbi5BcHBsZUF1dGhlbnRpY2F0aW9uU2NvcGUuRlVMTF9OQU1FLFxuICogICAgICAgQXBwbGVBdXRoZW50aWNhdGlvbi5BcHBsZUF1dGhlbnRpY2F0aW9uU2NvcGUuRU1BSUwsXG4gKiAgICAgXSxcbiAqICAgfSk7XG4gKiAgIGZpcmViYXNlQXV0aCh7IGlkVG9rZW46IGNyZWRlbnRpYWwuaWRlbnRpdHlUb2tlbiB9KTtcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRmlyZWJhc2VBdXRoKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QXV0aFJlc3BvbnNlLCBFcnJvciwgRmlyZWJhc2VBdXRoUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEF1dGhSZXNwb25zZSwgRXJyb3IsIEZpcmViYXNlQXV0aFJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IEZpcmViYXNlQXV0aFJlcXVlc3QpOiBQcm9taXNlPEF1dGhSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PEF1dGhSZXNwb25zZT4oJy9hdXRoL2ZpcmViYXNlJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBjdXJyZW50IHVzZXIgcXVlcnkgdG8gdHJpZ2dlciByZWZldGNoIHdpdGggbmV3IHRva2VuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSB0eXBlIGZvciB2ZXJpZnkgT1RQIGluY2x1ZGluZyBpc05ld1VzZXIgZmxhZ1xuICovXG5leHBvcnQgdHlwZSBWZXJpZnlPdHBSZXNwb25zZSA9IEF1dGhSZXNwb25zZSAmIHsgaXNOZXdVc2VyOiBib29sZWFuIH07XG5cbi8qKlxuICogU2VuZCBPVFAgdG8gcGhvbmUgbnVtYmVyXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBTZW5kcyBhIHZlcmlmaWNhdGlvbiBjb2RlIHRvIHRoZSBzcGVjaWZpZWQgcGhvbmUgbnVtYmVyIHZpYSBTTVMgb3Igdm9pY2UgY2FsbC5cbiAqIFVzZWQgZm9yIHBhc3N3b3JkbGVzcyBhdXRoZW50aWNhdGlvbi5cbiAqXG4gKiBAZW5kcG9pbnQgUE9TVCAvYXV0aC9waG9uZS9zZW5kLW90cFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZVNlbmRPdHAgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gUGhvbmVJbnB1dFNjcmVlbigpIHtcbiAqICAgY29uc3QgeyBtdXRhdGU6IHNlbmRPdHAsIGlzUGVuZGluZywgZXJyb3IgfSA9IHVzZVNlbmRPdHAoe1xuICogICAgIG9uU3VjY2VzczogKGRhdGEpID0+IHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdPVFAgc2VudCB0bzonLCBkYXRhLnBob25lKTtcbiAqICAgICAgIG5hdmlnYXRpb24ubmF2aWdhdGUoJ1ZlcmlmeU90cCcsIHsgcGhvbmUgfSk7XG4gKiAgICAgfSxcbiAqICAgICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICAgIEFsZXJ0LmFsZXJ0KCdFcnJvcicsIGVycm9yLm1lc3NhZ2UpO1xuICogICAgIH0sXG4gKiAgIH0pO1xuICpcbiAqICAgY29uc3QgaGFuZGxlU2VuZCA9ICgpID0+IHtcbiAqICAgICBzZW5kT3RwKHsgcGhvbmU6ICcrMTIzNDU2Nzg5MCcsIGNoYW5uZWw6ICdzbXMnIH0pO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIDxCdXR0b24gb25QcmVzcz17aGFuZGxlU2VuZH0gZGlzYWJsZWQ9e2lzUGVuZGluZ30gLz47XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VuZE90cChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPE90cFNlbnRSZXNwb25zZSwgRXJyb3IsIFNlbmRPdHBSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8T3RwU2VudFJlc3BvbnNlLCBFcnJvciwgU2VuZE90cFJlcXVlc3Q+IHtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogU2VuZE90cFJlcXVlc3QpOiBQcm9taXNlPE90cFNlbnRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0PE90cFNlbnRSZXNwb25zZT4oJy9hdXRoL3Bob25lL3NlbmQtb3RwJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFZlcmlmeSBPVFAgYW5kIGF1dGhlbnRpY2F0ZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVmVyaWZpZXMgdGhlIE9UUCBjb2RlIHNlbnQgdG8gdGhlIHBob25lIG51bWJlciBhbmQgYXV0aGVudGljYXRlcyB0aGUgdXNlci5cbiAqIElmIHRoZSB1c2VyIGRvZXNuJ3QgZXhpc3QsIGEgbmV3IGFjY291bnQgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LlxuICogUmV0dXJucyBhdXRoZW50aWNhdGlvbiB0b2tlbnMgYW5kIHVzZXIgaW5mb3JtYXRpb24uXG4gKlxuICogQGVuZHBvaW50IFBPU1QgL2F1dGgvcGhvbmUvdmVyaWZ5LW90cFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZVZlcmlmeU90cCB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBWZXJpZnlPdHBTY3JlZW4oeyBwaG9uZSB9KSB7XG4gKiAgIGNvbnN0IHsgbXV0YXRlOiB2ZXJpZnlPdHAsIGlzUGVuZGluZywgZXJyb3IgfSA9IHVzZVZlcmlmeU90cCh7XG4gKiAgICAgb25TdWNjZXNzOiBhc3luYyAoZGF0YSkgPT4ge1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdhY2Nlc3NUb2tlbicsIGRhdGEuYWNjZXNzVG9rZW4pO1xuICogICAgICAgYXdhaXQgU2VjdXJlU3RvcmUuc2V0SXRlbUFzeW5jKCdyZWZyZXNoVG9rZW4nLCBkYXRhLnJlZnJlc2hUb2tlbik7XG4gKlxuICogICAgICAgaWYgKGRhdGEuaXNOZXdVc2VyKSB7XG4gKiAgICAgICAgIG5hdmlnYXRpb24ubmF2aWdhdGUoJ09uYm9hcmRpbmcnKTtcbiAqICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgIG5hdmlnYXRpb24ubmF2aWdhdGUoJ0hvbWUnKTtcbiAqICAgICAgIH1cbiAqICAgICB9LFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVZlcmlmeSA9IChjb2RlOiBzdHJpbmcpID0+IHtcbiAqICAgICB2ZXJpZnlPdHAoeyBwaG9uZSwgY29kZSB9KTtcbiAqICAgfTtcbiAqXG4gKiAgIHJldHVybiA8T3RwSW5wdXQgb25Db21wbGV0ZT17aGFuZGxlVmVyaWZ5fSBkaXNhYmxlZD17aXNQZW5kaW5nfSAvPjtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VWZXJpZnlPdHAoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxWZXJpZnlPdHBSZXNwb25zZSwgRXJyb3IsIFZlcmlmeU90cFJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxWZXJpZnlPdHBSZXNwb25zZSwgRXJyb3IsIFZlcmlmeU90cFJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IFZlcmlmeU90cFJlcXVlc3QpOiBQcm9taXNlPFZlcmlmeU90cFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8VmVyaWZ5T3RwUmVzcG9uc2U+KCcvYXV0aC9waG9uZS92ZXJpZnktb3RwJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGRhdGEsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBjdXJyZW50IHVzZXIgcXVlcnkgdG8gdHJpZ2dlciByZWZldGNoIHdpdGggbmV3IHRva2VuXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
@@ -1,12 +1,36 @@
1
- import type { ChatMemberResponse, MessageResponse, EventChatResponse, SendMessageRequest, UpdateMessageRequest, UpdateChatSettingsRequest, UpdateMemberSettingsRequest } from '../types';
2
1
  /**
3
2
  * Update chat settings (hosts only)
4
3
  */
5
- export declare function useUpdateChatSettings(eventId: string): import("@tanstack/react-query").UseMutationResult<EventChatResponse, Error, UpdateChatSettingsRequest, unknown>;
4
+ export declare function useUpdateChatSettings(eventId: string): import("@tanstack/react-query").UseMutationResult<{
5
+ id: string;
6
+ eventId: string;
7
+ messageCount: number;
8
+ memberCount: number;
9
+ isActive: boolean;
10
+ isLocked: boolean;
11
+ lastMessageAt?: string;
12
+ createdAt: string;
13
+ eventTitle?: string;
14
+ eventStartDate?: string;
15
+ }, Error, {
16
+ isLocked?: boolean;
17
+ isActive?: boolean;
18
+ }, unknown>;
6
19
  /**
7
20
  * Join event chat
8
21
  */
9
- export declare function useJoinEventChat(eventId: string): import("@tanstack/react-query").UseMutationResult<ChatMemberResponse, Error, void, unknown>;
22
+ export declare function useJoinEventChat(eventId: string): import("@tanstack/react-query").UseMutationResult<{
23
+ id: string;
24
+ chatId: string;
25
+ userId: string;
26
+ role: "MEMBER" | "MODERATOR" | "HOST";
27
+ nickname?: string;
28
+ isMuted: boolean;
29
+ lastReadAt?: string;
30
+ joinedAt: string;
31
+ userName?: string;
32
+ userImage?: string;
33
+ }, Error, void, unknown>;
10
34
  /**
11
35
  * Leave event chat
12
36
  */
@@ -14,7 +38,21 @@ export declare function useLeaveEventChat(eventId: string): import("@tanstack/re
14
38
  /**
15
39
  * Update member settings (mute, nickname)
16
40
  */
17
- export declare function useUpdateMemberSettings(eventId: string): import("@tanstack/react-query").UseMutationResult<ChatMemberResponse, Error, UpdateMemberSettingsRequest, unknown>;
41
+ export declare function useUpdateMemberSettings(eventId: string): import("@tanstack/react-query").UseMutationResult<{
42
+ id: string;
43
+ chatId: string;
44
+ userId: string;
45
+ role: "MEMBER" | "MODERATOR" | "HOST";
46
+ nickname?: string;
47
+ isMuted: boolean;
48
+ lastReadAt?: string;
49
+ joinedAt: string;
50
+ userName?: string;
51
+ userImage?: string;
52
+ }, Error, {
53
+ isMuted?: boolean;
54
+ nickname?: string;
55
+ }, unknown>;
18
56
  /**
19
57
  * Mark messages as read
20
58
  */
@@ -22,13 +60,52 @@ export declare function useMarkMessagesAsRead(eventId: string): import("@tanstac
22
60
  /**
23
61
  * Send a message
24
62
  */
25
- export declare function useSendEventChatMessage(eventId: string): import("@tanstack/react-query").UseMutationResult<MessageResponse, Error, SendMessageRequest, unknown>;
63
+ export declare function useSendEventChatMessage(eventId: string): import("@tanstack/react-query").UseMutationResult<{
64
+ id: string;
65
+ chatId: string;
66
+ userId: string;
67
+ content: string;
68
+ messageType: "TEXT" | "IMAGE" | "SYSTEM" | "ANNOUNCEMENT";
69
+ imageUrl?: string;
70
+ replyToId?: string;
71
+ isEdited: boolean;
72
+ isDeleted: boolean;
73
+ createdAt: string;
74
+ updatedAt?: string;
75
+ userName?: string;
76
+ userImage?: string;
77
+ replyToContent?: string;
78
+ replyToUserName?: string;
79
+ }, Error, {
80
+ content: string;
81
+ messageType: "TEXT" | "IMAGE" | "SYSTEM" | "ANNOUNCEMENT";
82
+ imageUrl?: string;
83
+ replyToId?: string;
84
+ }, unknown>;
26
85
  /**
27
86
  * Update a message
28
87
  */
29
- export declare function useUpdateEventChatMessage(eventId: string): import("@tanstack/react-query").UseMutationResult<MessageResponse, Error, {
88
+ export declare function useUpdateEventChatMessage(eventId: string): import("@tanstack/react-query").UseMutationResult<{
89
+ id: string;
90
+ chatId: string;
91
+ userId: string;
92
+ content: string;
93
+ messageType: "TEXT" | "IMAGE" | "SYSTEM" | "ANNOUNCEMENT";
94
+ imageUrl?: string;
95
+ replyToId?: string;
96
+ isEdited: boolean;
97
+ isDeleted: boolean;
98
+ createdAt: string;
99
+ updatedAt?: string;
100
+ userName?: string;
101
+ userImage?: string;
102
+ replyToContent?: string;
103
+ replyToUserName?: string;
104
+ }, Error, {
30
105
  messageId: string;
31
- } & UpdateMessageRequest, unknown>;
106
+ } & {
107
+ content: string;
108
+ }, unknown>;
32
109
  /**
33
110
  * Delete a message
34
111
  */