@rudderstack/integrations-lib 0.2.14 → 0.2.16

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.
@@ -0,0 +1,29 @@
1
+ import { AuthObject, CreateSegmentBody, CreateSegmentResponse, GetSegmentsResponse } from './type';
2
+ import { AxiosClient } from '../../network/clients/axios_client';
3
+ export default class CustomerIOSegment {
4
+ static readonly url: string;
5
+ private static readonly DEFAULT_AXIOS_CLIENT;
6
+ private axiosClient;
7
+ private authObject;
8
+ constructor(authObject: AuthObject, axiosClient?: AxiosClient);
9
+ private static validateAuthObject;
10
+ /**
11
+ * This function returns the app api key.
12
+ * @returns
13
+ */
14
+ getAppApiKey(): string;
15
+ /**
16
+ * This method fetches the segments. If unable to fetch the segments, it returns a RestError.
17
+ * ref: https://docs.customer.io/api/app/#operation/listSegments
18
+ * @returns
19
+ */
20
+ getSegments(): Promise<GetSegmentsResponse>;
21
+ /**
22
+ * This method creates a manual segment. It requires the segment body. The method returns the created segment. If the manual segment is not created, it returns a RestError.
23
+ * ref: https://docs.customer.io/api/app/#operation/createManSegment
24
+ * @param body CreateSegment fields
25
+ * @returns
26
+ */
27
+ createSegment(body: CreateSegmentBody): Promise<CreateSegmentResponse>;
28
+ }
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGjE,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAyC;IAEpE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IAEjE,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU,EAAE,WAAW,cAAyC;IAMxF,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAOjC;;;OAGG;IACH,YAAY,IAAI,MAAM;IAItB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAiBjD;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAiB7E"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ const axios_client_1 = require("../../network/clients/axios_client");
5
+ class CustomerIOSegment {
6
+ constructor(authObject, axiosClient = CustomerIOSegment.DEFAULT_AXIOS_CLIENT) {
7
+ CustomerIOSegment.validateAuthObject(authObject);
8
+ this.authObject = authObject;
9
+ this.axiosClient = axiosClient;
10
+ }
11
+ static validateAuthObject(authObject) {
12
+ if (!authObject?.appApiKey || typeof authObject.appApiKey !== 'string') {
13
+ throw new Error('appApiKey is required and must be a string');
14
+ }
15
+ return authObject;
16
+ }
17
+ /**
18
+ * This function returns the app api key.
19
+ * @returns
20
+ */
21
+ getAppApiKey() {
22
+ return this.authObject.appApiKey;
23
+ }
24
+ /**
25
+ * This method fetches the segments. If unable to fetch the segments, it returns a RestError.
26
+ * ref: https://docs.customer.io/api/app/#operation/listSegments
27
+ * @returns
28
+ */
29
+ async getSegments() {
30
+ const headers = {
31
+ Accept: 'application/json',
32
+ Authorization: `Bearer ${this.getAppApiKey()}`,
33
+ };
34
+ const resp = await this.axiosClient.get(CustomerIOSegment.url, {
35
+ headers,
36
+ });
37
+ if (resp.type === 'success') {
38
+ return resp.responseBody;
39
+ }
40
+ throw new utils_1.RestError(resp.message, resp.statusCode);
41
+ }
42
+ /**
43
+ * This method creates a manual segment. It requires the segment body. The method returns the created segment. If the manual segment is not created, it returns a RestError.
44
+ * ref: https://docs.customer.io/api/app/#operation/createManSegment
45
+ * @param body CreateSegment fields
46
+ * @returns
47
+ */
48
+ async createSegment(body) {
49
+ const headers = {
50
+ 'Content-Type': 'application/json',
51
+ Authorization: `Bearer ${this.getAppApiKey()}`,
52
+ };
53
+ const resp = await this.axiosClient.post(CustomerIOSegment.url, body, {
54
+ headers,
55
+ });
56
+ if (resp.type === 'success') {
57
+ return resp.responseBody;
58
+ }
59
+ throw new utils_1.RestError(resp.message, resp.statusCode);
60
+ }
61
+ }
62
+ CustomerIOSegment.url = 'https://api.customer.io/v1/segments';
63
+ CustomerIOSegment.DEFAULT_AXIOS_CLIENT = new axios_client_1.AxiosClient();
64
+ exports.default = CustomerIOSegment;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jdXN0b21lcmlvX2F1ZGllbmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsbUNBQW9DO0FBQ3BDLHFFQUFpRTtBQUdqRSxNQUFxQixpQkFBaUI7SUFTcEMsWUFBWSxVQUFzQixFQUFFLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0I7UUFDdEYsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFzQjtRQUN0RCxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsSUFBSSxPQUFPLFVBQVUsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3RFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2YsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLGFBQWEsRUFBRSxVQUFVLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtTQUMvQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQXFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3ZFLGlCQUFpQixDQUFDLEdBQUcsRUFDckI7WUFDRSxPQUFPO1NBQ1IsQ0FDRixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUI7UUFDRCxNQUFNLElBQUksaUJBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQXVCO1FBQ3pDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxhQUFhLEVBQUUsVUFBVSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUU7U0FDL0MsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUF1QyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxRSxpQkFBaUIsQ0FBQyxHQUFHLEVBQ3JCLElBQUksRUFDSjtZQUNFLE9BQU87U0FDUixDQUNGLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQjtRQUNELE1BQU0sSUFBSSxpQkFBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBekVlLHFCQUFHLEdBQVcscUNBQXFDLENBQUM7QUFFNUMsc0NBQW9CLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUM7a0JBSDlDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhPYmplY3QsIENyZWF0ZVNlZ21lbnRCb2R5LCBDcmVhdGVTZWdtZW50UmVzcG9uc2UsIEdldFNlZ21lbnRzUmVzcG9uc2UgfSBmcm9tICcuL3R5cGUnO1xuaW1wb3J0IHsgUmVzdEVycm9yIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBeGlvc0NsaWVudCB9IGZyb20gJy4uLy4uL25ldHdvcmsvY2xpZW50cy9heGlvc19jbGllbnQnO1xuaW1wb3J0IHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9uZXR3b3JrJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3VzdG9tZXJJT1NlZ21lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgdXJsOiBzdHJpbmcgPSAnaHR0cHM6Ly9hcGkuY3VzdG9tZXIuaW8vdjEvc2VnbWVudHMnO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQVhJT1NfQ0xJRU5UID0gbmV3IEF4aW9zQ2xpZW50KCk7XG5cbiAgcHJpdmF0ZSBheGlvc0NsaWVudDogQXhpb3NDbGllbnQ7XG5cbiAgcHJpdmF0ZSBhdXRoT2JqZWN0OiBBdXRoT2JqZWN0O1xuXG4gIGNvbnN0cnVjdG9yKGF1dGhPYmplY3Q6IEF1dGhPYmplY3QsIGF4aW9zQ2xpZW50ID0gQ3VzdG9tZXJJT1NlZ21lbnQuREVGQVVMVF9BWElPU19DTElFTlQpIHtcbiAgICBDdXN0b21lcklPU2VnbWVudC52YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdCk7XG4gICAgdGhpcy5hdXRoT2JqZWN0ID0gYXV0aE9iamVjdDtcbiAgICB0aGlzLmF4aW9zQ2xpZW50ID0gYXhpb3NDbGllbnQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdDogQXV0aE9iamVjdCk6IEF1dGhPYmplY3Qge1xuICAgIGlmICghYXV0aE9iamVjdD8uYXBwQXBpS2V5IHx8IHR5cGVvZiBhdXRoT2JqZWN0LmFwcEFwaUtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXBwQXBpS2V5IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgfVxuICAgIHJldHVybiBhdXRoT2JqZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXBwIGFwaSBrZXkuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRBcHBBcGlLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoT2JqZWN0LmFwcEFwaUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBzZWdtZW50cy4gSWYgdW5hYmxlIHRvIGZldGNoIHRoZSBzZWdtZW50cywgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogcmVmOiBodHRwczovL2RvY3MuY3VzdG9tZXIuaW8vYXBpL2FwcC8jb3BlcmF0aW9uL2xpc3RTZWdtZW50c1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0U2VnbWVudHMoKTogUHJvbWlzZTxHZXRTZWdtZW50c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuZ2V0QXBwQXBpS2V5KCl9YCxcbiAgICB9O1xuICAgIGNvbnN0IHJlc3A6IEFwaVJlc3BvbnNlPEdldFNlZ21lbnRzUmVzcG9uc2U+ID0gYXdhaXQgdGhpcy5heGlvc0NsaWVudC5nZXQoXG4gICAgICBDdXN0b21lcklPU2VnbWVudC51cmwsXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9LFxuICAgICk7XG4gICAgaWYgKHJlc3AudHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICByZXR1cm4gcmVzcC5yZXNwb25zZUJvZHk7XG4gICAgfVxuICAgIHRocm93IG5ldyBSZXN0RXJyb3IocmVzcC5tZXNzYWdlLCByZXNwLnN0YXR1c0NvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBtYW51YWwgc2VnbWVudC4gSXQgcmVxdWlyZXMgdGhlIHNlZ21lbnQgYm9keS4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBjcmVhdGVkIHNlZ21lbnQuIElmIHRoZSBtYW51YWwgc2VnbWVudCBpcyBub3QgY3JlYXRlZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogcmVmOiBodHRwczovL2RvY3MuY3VzdG9tZXIuaW8vYXBpL2FwcC8jb3BlcmF0aW9uL2NyZWF0ZU1hblNlZ21lbnRcbiAgICogQHBhcmFtIGJvZHkgQ3JlYXRlU2VnbWVudCBmaWVsZHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGNyZWF0ZVNlZ21lbnQoYm9keTogQ3JlYXRlU2VnbWVudEJvZHkpOiBQcm9taXNlPENyZWF0ZVNlZ21lbnRSZXNwb25zZT4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuZ2V0QXBwQXBpS2V5KCl9YCxcbiAgICB9O1xuICAgIGNvbnN0IHJlc3A6IEFwaVJlc3BvbnNlPENyZWF0ZVNlZ21lbnRSZXNwb25zZT4gPSBhd2FpdCB0aGlzLmF4aW9zQ2xpZW50LnBvc3QoXG4gICAgICBDdXN0b21lcklPU2VnbWVudC51cmwsXG4gICAgICBib2R5LFxuICAgICAge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSxcbiAgICApO1xuICAgIGlmIChyZXNwLnR5cGUgPT09ICdzdWNjZXNzJykge1xuICAgICAgcmV0dXJuIHJlc3AucmVzcG9uc2VCb2R5O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUmVzdEVycm9yKHJlc3AubWVzc2FnZSwgcmVzcC5zdGF0dXNDb2RlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_1 = __importDefault(require("./index"));
7
+ const axios_client_1 = require("../../network/clients/axios_client");
8
+ const utils_1 = require("./utils");
9
+ jest.mock('../../network/clients/axios_client', () => ({
10
+ AxiosClient: jest.fn().mockImplementation(() => ({
11
+ get: jest.fn(),
12
+ post: jest.fn(),
13
+ })),
14
+ }));
15
+ describe('CustomerIOSegment', () => {
16
+ let customerIOSegment;
17
+ let mockClient;
18
+ const mockAppApiKey = 'test-api-key';
19
+ beforeEach(() => {
20
+ jest.clearAllMocks();
21
+ mockClient = new axios_client_1.AxiosClient();
22
+ customerIOSegment = new index_1.default({ appApiKey: mockAppApiKey }, mockClient);
23
+ });
24
+ describe('constructor', () => {
25
+ it('should create instance with valid auth object', () => {
26
+ expect(customerIOSegment).toBeInstanceOf(index_1.default);
27
+ expect(customerIOSegment.getAppApiKey()).toBe(mockAppApiKey);
28
+ });
29
+ it('should throw error if appApiKey is missing', () => {
30
+ expect(() => new index_1.default({})).toThrow('appApiKey is required and must be a string');
31
+ });
32
+ it('should throw error if appApiKey is not a string', () => {
33
+ expect(() => new index_1.default({ appApiKey: 123 })).toThrow('appApiKey is required and must be a string');
34
+ });
35
+ });
36
+ describe('getAppApiKey', () => {
37
+ it('should return the app api key', () => {
38
+ expect(customerIOSegment.getAppApiKey()).toBe(mockAppApiKey);
39
+ });
40
+ });
41
+ describe('getSegments', () => {
42
+ const mockSuccessResponse = {
43
+ type: 'success',
44
+ responseBody: {
45
+ segments: [
46
+ {
47
+ id: 1,
48
+ name: 'Test Segment',
49
+ description: 'Test Description',
50
+ },
51
+ ],
52
+ },
53
+ statusCode: 200,
54
+ headers: {},
55
+ };
56
+ const mockErrorResponse = {
57
+ type: 'client-error',
58
+ message: 'Not Found',
59
+ statusCode: 404,
60
+ };
61
+ it('should fetch segments successfully', async () => {
62
+ mockClient.get.mockResolvedValue(mockSuccessResponse);
63
+ const result = await customerIOSegment.getSegments();
64
+ expect(mockClient.get).toHaveBeenCalledWith(index_1.default.url, {
65
+ headers: {
66
+ Accept: 'application/json',
67
+ Authorization: `Bearer ${mockAppApiKey}`,
68
+ },
69
+ });
70
+ expect(result).toEqual(mockSuccessResponse.responseBody);
71
+ });
72
+ it('should throw RestError when fetching segments fails', async () => {
73
+ mockClient.get.mockResolvedValue(mockErrorResponse);
74
+ await expect(customerIOSegment.getSegments()).rejects.toThrow(utils_1.RestError);
75
+ await expect(customerIOSegment.getSegments()).rejects.toThrow('Not Found');
76
+ });
77
+ });
78
+ describe('createSegment', () => {
79
+ const mockSegmentBody = {
80
+ segment: {
81
+ name: 'Test Segment',
82
+ description: 'Test Description',
83
+ },
84
+ };
85
+ const mockSuccessResponse = {
86
+ type: 'success',
87
+ responseBody: {
88
+ segment: {
89
+ id: 1,
90
+ name: 'Test Segment',
91
+ description: 'Test Description',
92
+ state: 'active',
93
+ },
94
+ },
95
+ statusCode: 201,
96
+ headers: {},
97
+ };
98
+ const mockErrorResponse = {
99
+ type: 'client-error',
100
+ message: 'Bad Request',
101
+ statusCode: 400,
102
+ };
103
+ it('should create segment successfully', async () => {
104
+ mockClient.post.mockResolvedValue(mockSuccessResponse);
105
+ const result = await customerIOSegment.createSegment(mockSegmentBody);
106
+ expect(mockClient.post).toHaveBeenCalledWith(index_1.default.url, mockSegmentBody, {
107
+ headers: {
108
+ 'Content-Type': 'application/json',
109
+ Authorization: `Bearer ${mockAppApiKey}`,
110
+ },
111
+ });
112
+ expect(result).toEqual(mockSuccessResponse.responseBody);
113
+ });
114
+ it('should throw RestError when creating segment fails', async () => {
115
+ mockClient.post.mockResolvedValue(mockErrorResponse);
116
+ await expect(customerIOSegment.createSegment(mockSegmentBody)).rejects.toThrow(utils_1.RestError);
117
+ await expect(customerIOSegment.createSegment(mockSegmentBody)).rejects.toThrow('Bad Request');
118
+ });
119
+ });
120
+ });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL2N1c3RvbWVyaW9fYXVkaWVuY2UvaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUF3QztBQUN4QyxxRUFBaUU7QUFDakUsbUNBQW9DO0FBSXBDLElBQUksQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyRCxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0MsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtLQUNoQixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMsQ0FBQztBQUVKLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsSUFBSSxpQkFBb0MsQ0FBQztJQUN6QyxJQUFJLFVBQW9DLENBQUM7SUFDekMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0lBRXJDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsVUFBVSxHQUFHLElBQUksMEJBQVcsRUFBOEIsQ0FBQztRQUMzRCxpQkFBaUIsR0FBRyxJQUFJLGVBQWlCLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUMzQixFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxlQUFpQixDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxD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QU8sQ0FBQyxPQUFPLENBQUMsaUJBQVMsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEN1c3RvbWVySU9TZWdtZW50IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgQXhpb3NDbGllbnQgfSBmcm9tICcuLi8uLi9uZXR3b3JrL2NsaWVudHMvYXhpb3NfY2xpZW50JztcbmltcG9ydCB7IFJlc3RFcnJvciB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgR2V0U2VnbWVudHNSZXNwb25zZSwgQ3JlYXRlU2VnbWVudFJlc3BvbnNlIH0gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbmV0d29yayc7XG5cbmplc3QubW9jaygnLi4vLi4vbmV0d29yay9jbGllbnRzL2F4aW9zX2NsaWVudCcsICgpID0+ICh7XG4gIEF4aW9zQ2xpZW50OiBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7XG4gICAgZ2V0OiBqZXN0LmZuKCksXG4gICAgcG9zdDogamVzdC5mbigpLFxuICB9KSksXG59KSk7XG5cbmRlc2NyaWJlKCdDdXN0b21lcklPU2VnbWVudCcsICgpID0+IHtcbiAgbGV0IGN1c3RvbWVySU9TZWdtZW50OiBDdXN0b21lcklPU2VnbWVudDtcbiAgbGV0IG1vY2tDbGllbnQ6IGplc3QuTW9ja2VkPEF4aW9zQ2xpZW50PjtcbiAgY29uc3QgbW9ja0FwcEFwaUtleSA9ICd0ZXN0LWFwaS1rZXknO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICAgIG1vY2tDbGllbnQgPSBuZXcgQXhpb3NDbGllbnQoKSBhcyBqZXN0Lk1vY2tlZDxBeGlvc0NsaWVudD47XG4gICAgY3VzdG9tZXJJT1NlZ21lbnQgPSBuZXcgQ3VzdG9tZXJJT1NlZ21lbnQoeyBhcHBBcGlLZXk6IG1vY2tBcHBBcGlLZXkgfSwgbW9ja0NsaWVudCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb25zdHJ1Y3RvcicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBpbnN0YW5jZSB3aXRoIHZhbGlkIGF1dGggb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGN1c3RvbWVySU9TZWdtZW50KS50b0JlSW5zdGFuY2VPZihDdXN0b21lcklPU2VnbWVudCk7XG4gICAgICBleHBlY3QoY3VzdG9tZXJJT1NlZ21lbnQuZ2V0QXBwQXBpS2V5KCkpLnRvQmUobW9ja0FwcEFwaUtleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIGFwcEFwaUtleSBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IG5ldyBDdXN0b21lcklPU2VnbWVudCh7fSBhcyBhbnkpKS50b1Rocm93KFxuICAgICAgICAnYXBwQXBpS2V5IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGlmIGFwcEFwaUtleSBpcyBub3QgYSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4gbmV3IEN1c3RvbWVySU9TZWdtZW50KHsgYXBwQXBpS2V5OiAxMjMgfSBhcyBhbnkpKS50b1Rocm93KFxuICAgICAgICAnYXBwQXBpS2V5IGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGEgc3RyaW5nJyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRBcHBBcGlLZXknLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGFwcCBhcGkga2V5JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGN1c3RvbWVySU9TZWdtZW50LmdldEFwcEFwaUtleSgpKS50b0JlKG1vY2tBcHBBcGlLZXkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0U2VnbWVudHMnLCAoKSA9PiB7XG4gICAgY29uc3QgbW9ja1N1Y2Nlc3NSZXNwb25zZTogQXBpUmVzcG9uc2U8R2V0U2VnbWVudHNSZXNwb25zZT4gPSB7XG4gICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICByZXNwb25zZUJvZHk6IHtcbiAgICAgICAgc2VnbWVudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgIG5hbWU6ICdUZXN0IFNlZ21lbnQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUZXN0IERlc2NyaXB0aW9uJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgIH07XG5cbiAgICBjb25zdCBtb2NrRXJyb3JSZXNwb25zZTogQXBpUmVzcG9uc2U8YW55PiA9IHtcbiAgICAgIHR5cGU6ICdjbGllbnQtZXJyb3InLFxuICAgICAgbWVzc2FnZTogJ05vdCBGb3VuZCcsXG4gICAgICBzdGF0dXNDb2RlOiA0MDQsXG4gICAgfTtcblxuICAgIGl0KCdzaG91bGQgZmV0Y2ggc2VnbWVudHMgc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgbW9ja0NsaWVudC5nZXQubW9ja1Jlc29sdmVkVmFsdWUobW9ja1N1Y2Nlc3NSZXNwb25zZSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbWVySU9TZWdtZW50LmdldFNlZ21lbnRzKCk7XG5cbiAgICAgIGV4cGVjdChtb2NrQ2xpZW50LmdldCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoQ3VzdG9tZXJJT1NlZ21lbnQudXJsLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7bW9ja0FwcEFwaUtleX1gLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tTdWNjZXNzUmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgUmVzdEVycm9yIHdoZW4gZmV0Y2hpbmcgc2VnbWVudHMgZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBtb2NrQ2xpZW50LmdldC5tb2NrUmVzb2x2ZWRWYWx1ZShtb2NrRXJyb3JSZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGV4cGVjdChjdXN0b21lcklPU2VnbWVudC5nZXRTZWdtZW50cygpKS5yZWplY3RzLnRvVGhyb3coUmVzdEVycm9yKTtcbiAgICAgIGF3YWl0IGV4cGVjdChjdXN0b21lcklPU2VnbWVudC5nZXRTZWdtZW50cygpKS5yZWplY3RzLnRvVGhyb3coJ05vdCBGb3VuZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlU2VnbWVudCcsICgpID0+IHtcbiAgICBjb25zdCBtb2NrU2VnbWVudEJvZHkgPSB7XG4gICAgICBzZWdtZW50OiB7XG4gICAgICAgIG5hbWU6ICdUZXN0IFNlZ21lbnQnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rlc3QgRGVzY3JpcHRpb24nLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9ja1N1Y2Nlc3NSZXNwb25zZTogQXBpUmVzcG9uc2U8Q3JlYXRlU2VnbWVudFJlc3BvbnNlPiA9IHtcbiAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIHJlc3BvbnNlQm9keToge1xuICAgICAgICBzZWdtZW50OiB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgbmFtZTogJ1Rlc3QgU2VnbWVudCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUZXN0IERlc2NyaXB0aW9uJyxcbiAgICAgICAgICBzdGF0ZTogJ2FjdGl2ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc3RhdHVzQ29kZTogMjAxLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgfTtcblxuICAgIGNvbnN0IG1vY2tFcnJvclJlc3BvbnNlOiBBcGlSZXNwb25zZTxhbnk+ID0ge1xuICAgICAgdHlwZTogJ2NsaWVudC1lcnJvcicsXG4gICAgICBtZXNzYWdlOiAnQmFkIFJlcXVlc3QnLFxuICAgICAgc3RhdHVzQ29kZTogNDAwLFxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBzZWdtZW50IHN1Y2Nlc3NmdWxseScsIGFzeW5jICgpID0+IHtcbiAgICAgIG1vY2tDbGllbnQucG9zdC5tb2NrUmVzb2x2ZWRWYWx1ZShtb2NrU3VjY2Vzc1Jlc3BvbnNlKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tZXJJT1NlZ21lbnQuY3JlYXRlU2VnbWVudChtb2NrU2VnbWVudEJvZHkpO1xuXG4gICAgICBleHBlY3QobW9ja0NsaWVudC5wb3N0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChDdXN0b21lcklPU2VnbWVudC51cmwsIG1vY2tTZWdtZW50Qm9keSwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7bW9ja0FwcEFwaUtleX1gLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tTdWNjZXNzUmVzcG9uc2UucmVzcG9uc2VCb2R5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgUmVzdEVycm9yIHdoZW4gY3JlYXRpbmcgc2VnbWVudCBmYWlscycsIGFzeW5jICgpID0+IHtcbiAgICAgIG1vY2tDbGllbnQucG9zdC5tb2NrUmVzb2x2ZWRWYWx1ZShtb2NrRXJyb3JSZXNwb25zZSk7XG5cbiAgICAgIGF3YWl0IGV4cGVjdChjdXN0b21lcklPU2VnbWVudC5jcmVhdGVTZWdtZW50KG1vY2tTZWdtZW50Qm9keSkpLnJlamVjdHMudG9UaHJvdyhSZXN0RXJyb3IpO1xuICAgICAgYXdhaXQgZXhwZWN0KGN1c3RvbWVySU9TZWdtZW50LmNyZWF0ZVNlZ21lbnQobW9ja1NlZ21lbnRCb2R5KSkucmVqZWN0cy50b1Rocm93KCdCYWQgUmVxdWVzdCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,36 @@
1
+ export interface AuthObject {
2
+ appApiKey: string;
3
+ }
4
+ export interface CreateSegmentBody {
5
+ segment: {
6
+ name: string;
7
+ description?: string;
8
+ };
9
+ }
10
+ export interface CreateSegmentResponse {
11
+ segment: {
12
+ id: number;
13
+ deduplicate_id?: string;
14
+ name?: string;
15
+ description?: string;
16
+ state?: string;
17
+ progress?: number | null;
18
+ type?: string;
19
+ tags?: string[] | null;
20
+ };
21
+ }
22
+ export interface GetSegmentsResponse {
23
+ segments: [
24
+ {
25
+ id: number;
26
+ deduplicate_id?: string;
27
+ name: string;
28
+ description?: string;
29
+ state?: string;
30
+ progress?: number | null;
31
+ type?: string;
32
+ tags?: string[] | null;
33
+ }
34
+ ];
35
+ }
36
+ //# sourceMappingURL=type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,MAAM,CAAC;YACX,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;SACxB;KACF,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL2N1c3RvbWVyaW9fYXVkaWVuY2UvdHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBdXRoT2JqZWN0IHtcbiAgYXBwQXBpS2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2VnbWVudEJvZHkge1xuICBzZWdtZW50OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNlZ21lbnRSZXNwb25zZSB7XG4gIHNlZ21lbnQ6IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGRlZHVwbGljYXRlX2lkPzogc3RyaW5nO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgc3RhdGU/OiBzdHJpbmc7XG4gICAgcHJvZ3Jlc3M/OiBudW1iZXIgfCBudWxsO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgdGFncz86IHN0cmluZ1tdIHwgbnVsbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTZWdtZW50c1Jlc3BvbnNlIHtcbiAgc2VnbWVudHM6IFtcbiAgICB7XG4gICAgICBpZDogbnVtYmVyO1xuICAgICAgZGVkdXBsaWNhdGVfaWQ/OiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICAgIHN0YXRlPzogc3RyaW5nO1xuICAgICAgcHJvZ3Jlc3M/OiBudW1iZXIgfCBudWxsO1xuICAgICAgdHlwZT86IHN0cmluZztcbiAgICAgIHRhZ3M/OiBzdHJpbmdbXSB8IG51bGw7XG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export declare class RestError extends Error {
2
+ statusCode: number;
3
+ constructor(message: string, statusCode: number);
4
+ }
5
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/sdks/customerio_audience/utils.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,UAAU,EAAE,MAAM,CAAC;gBAEP,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIhD"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RestError = void 0;
4
+ class RestError extends Error {
5
+ constructor(message, statusCode) {
6
+ super(message);
7
+ this.statusCode = statusCode;
8
+ }
9
+ }
10
+ exports.RestError = RestError;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9jdXN0b21lcmlvX2F1ZGllbmNlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsU0FBVSxTQUFRLEtBQUs7SUFHbEMsWUFBWSxPQUFlLEVBQUUsVUFBa0I7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBUEQsOEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVzdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBzdGF0dXNDb2RlOiBudW1iZXIpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  import SFMC from './sfmc';
2
- export { SFMC };
2
+ import CustomerIOSegment from './customerio_audience';
3
+ export { SFMC, CustomerIOSegment };
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC"}
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SFMC = void 0;
6
+ exports.CustomerIOSegment = exports.SFMC = void 0;
7
7
  const sfmc_1 = __importDefault(require("./sfmc"));
8
8
  exports.SFMC = sfmc_1.default;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFakIsZUFGRixjQUFJLENBRUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuXG5leHBvcnQgeyBTRk1DIH07XG4iXX0=
9
+ const customerio_audience_1 = __importDefault(require("./customerio_audience"));
10
+ exports.CustomerIOSegment = customerio_audience_1.default;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFHakIsZUFIRixjQUFJLENBR0U7QUFGYixnRkFBc0Q7QUFFdkMsNEJBRlIsNkJBQWlCLENBRVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuaW1wb3J0IEN1c3RvbWVySU9TZWdtZW50IGZyb20gJy4vY3VzdG9tZXJpb19hdWRpZW5jZSc7XG5cbmV4cG9ydCB7IFNGTUMsIEN1c3RvbWVySU9TZWdtZW50IH07XG4iXX0=
@@ -134,4 +134,5 @@ export declare const getErrorRespEvents: (metadata: Metadata[], statusCode: numb
134
134
  batched: boolean;
135
135
  };
136
136
  export declare const convertToString: (value: any) => string;
137
+ export declare const uuidv5: (val: string) => string;
137
138
  //# sourceMappingURL=misc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":";AACA,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAK5B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMtD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACpB,eAAO,MAAM,SAAS,MAAO,OAAO,YAAsB,CAAC;AAC3D,eAAO,MAAM,UAAU,MAAO,OAAO,YAAkB,CAAC;AACxD,eAAO,MAAM,SAAS,MAAO,OAAO,YAAc,CAAC;AACnD,eAAO,MAAM,mBAAmB,MAAO,OAAO,YAAiC,CAAC;AAChF,eAAO,MAAM,8BAA8B,MAAO,OAAO,YACV,CAAC;AAChD,eAAO,MAAM,OAAO,UAAW,OAAO,YAAiC,CAAC;AAGxE,eAAO,MAAM,qBAAqB,QAAS,OAAO,YAGjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,OAAO,YAG5C,CAAC;AACF,eAAO,MAAM,4BAA4B,QAAS,OAAO,YAGxD,CAAC;AACF,eAAO,MAAM,oCAAoC,QAAS,OAAO,YAGhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,eAAgB,OAAO,YAG7C,CAAC;AAMF,eAAO,MAAM,YAAY,YAAa,gBAAgB,SASrD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,WAA2C,CAAC;AAG1F,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,GAAG,eAM3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,WACK,CAAC;AAEpD,eAAO,MAAM,WAAW,QAAS,OAAO,YAGvC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,QAAS,OAAO,mHASnC,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,OAAO,YAGtC,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,OAAO,YAAwC,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAS,GAAG,YAMrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,UAAW,OAAO,YAOpD,CAAC;AAEJ,eAAO,MAAM,mCAAmC,QAAS,OAAO,YAG/D,CAAC;AAGF,eAAO,MAAM,gBAAgB,8EAU5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,WAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,gEAsBvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,8DAS7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B;;;SAQ1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,OAAO,0CA+BxC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,uBAY3C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,YAAa,MAAM,WAAW,MAAM,oBAS/D,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,WAAkB,CAAC;AAEjF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAO,MAA0D,CAAC;AAI3F,eAAO,MAAM,kBAAkB,aACnB,QAAQ,EAAE,cACR,MAAM,SACX,MAAM,YACH,MAAM,YACP,OAAO;cAEN,QAAQ,EAAE;gBACR,MAAM;WACX,MAAM;cACH,MAAM;aACP,OAAO;CAOhB,CAAC;AAEH,eAAO,MAAM,eAAe,UAAW,GAAG,WAKzC,CAAC"}
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../src/utils/misc.ts"],"names":[],"mappings":";AACA,OAAO,GAAG,MAAM,WAAW,CAAC;AAC5B,OAAO,GAAG,MAAM,WAAW,CAAC;AAM5B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMtD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACpB,eAAO,MAAM,SAAS,MAAO,OAAO,YAAsB,CAAC;AAC3D,eAAO,MAAM,UAAU,MAAO,OAAO,YAAkB,CAAC;AACxD,eAAO,MAAM,SAAS,MAAO,OAAO,YAAc,CAAC;AACnD,eAAO,MAAM,mBAAmB,MAAO,OAAO,YAAiC,CAAC;AAChF,eAAO,MAAM,8BAA8B,MAAO,OAAO,YACV,CAAC;AAChD,eAAO,MAAM,OAAO,UAAW,OAAO,YAAiC,CAAC;AAGxE,eAAO,MAAM,qBAAqB,QAAS,OAAO,YAGjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,OAAO,YAG5C,CAAC;AACF,eAAO,MAAM,4BAA4B,QAAS,OAAO,YAGxD,CAAC;AACF,eAAO,MAAM,oCAAoC,QAAS,OAAO,YAGhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,eAAgB,OAAO,YAG7C,CAAC;AAMF,eAAO,MAAM,YAAY,YAAa,gBAAgB,SASrD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,WAA2C,CAAC;AAG1F,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,GAAG,eAM3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,MAAM,WACK,CAAC;AAEpD,eAAO,MAAM,WAAW,QAAS,OAAO,YAGvC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,QAAS,OAAO,mHASnC,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,OAAO,YAGtC,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,OAAO,YAAwC,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAS,GAAG,YAMrC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,UAAW,OAAO,YAOpD,CAAC;AAEJ,eAAO,MAAM,mCAAmC,QAAS,OAAO,YAG/D,CAAC;AAGF,eAAO,MAAM,gBAAgB,8EAU5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,WAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,gEAsBvC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,8DAS7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B;;;SAQ1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,SAAU,OAAO,0CA+BxC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,UAAW,MAAM,uBAY3C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,YAAa,MAAM,WAAW,MAAM,oBAS/D,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,WAAkB,CAAC;AAEjF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAO,MAA0D,CAAC;AAI3F,eAAO,MAAM,kBAAkB,aACnB,QAAQ,EAAE,cACR,MAAM,SACX,MAAM,YACH,MAAM,YACP,OAAO;cAEN,QAAQ,EAAE;gBACR,MAAM;WACX,MAAM;cACH,MAAM;aACP,OAAO;CAOhB,CAAC;AAEH,eAAO,MAAM,eAAe,UAAW,GAAG,WAKzC,CAAC;AAGF,eAAO,MAAM,MAAM,QAAS,MAAM,WAA4B,CAAC"}
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.convertToString = exports.getErrorRespEvents = exports.generateUUID = exports.hashToSha256 = exports.formatTimeStamp = exports.getOffsetInSec = exports.flattenJson = exports.getValueFromPropertiesOrTraits = exports.getHashFromArrayWithValueAsObject = exports.getHashFromArrayWithDuplicate = exports.getHashFromArray = exports.removeUndefinedNullEmptyExclBoolInt = exports.isDefinedNotNullNotEmpty = exports.isEmptyObject = exports.isEmpty = exports.isObject = exports.getType = exports.isPrimitive = exports.stripTrailingSlash = exports.isValidUrl = exports.base64Convertor = exports.getEventTime = exports.flattenMap = exports.removeUndefinedAndNullAndEmptyValues = exports.removeUndefinedAndNullValues = exports.removeNullValues = exports.removeUndefinedValues = exports.isBlank = exports.isDefinedAndNotNullAndNotEmpty = exports.isDefinedAndNotNull = exports.isNotNull = exports.isNotEmpty = exports.isDefined = exports.set = exports.get = void 0;
29
+ exports.uuidv5 = exports.convertToString = exports.getErrorRespEvents = exports.generateUUID = exports.hashToSha256 = exports.formatTimeStamp = exports.getOffsetInSec = exports.flattenJson = exports.getValueFromPropertiesOrTraits = exports.getHashFromArrayWithValueAsObject = exports.getHashFromArrayWithDuplicate = exports.getHashFromArray = exports.removeUndefinedNullEmptyExclBoolInt = exports.isDefinedNotNullNotEmpty = exports.isEmptyObject = exports.isEmpty = exports.isObject = exports.getType = exports.isPrimitive = exports.stripTrailingSlash = exports.isValidUrl = exports.base64Convertor = exports.getEventTime = exports.flattenMap = exports.removeUndefinedAndNullAndEmptyValues = exports.removeUndefinedAndNullValues = exports.removeNullValues = exports.removeUndefinedValues = exports.isBlank = exports.isDefinedAndNotNullAndNotEmpty = exports.isDefinedAndNotNull = exports.isNotNull = exports.isNotEmpty = exports.isDefined = exports.set = exports.get = void 0;
30
30
  const lodash_1 = __importDefault(require("lodash"));
31
31
  const get_value_1 = __importDefault(require("get-value"));
32
32
  exports.get = get_value_1.default;
@@ -35,6 +35,7 @@ exports.set = set_value_1.default;
35
35
  const moment_timezone_1 = __importDefault(require("moment-timezone"));
36
36
  const sha256_1 = __importDefault(require("sha256"));
37
37
  const crypto_1 = __importDefault(require("crypto"));
38
+ const uuid_1 = require("uuid");
38
39
  const logger = __importStar(require("../logger"));
39
40
  const instrumentation_error_1 = require("../errors/instrumentation_error");
40
41
  const isDefined = (x) => !lodash_1.default.isUndefined(x);
@@ -372,4 +373,7 @@ const convertToString = (value) => {
372
373
  return JSON.stringify(value);
373
374
  };
374
375
  exports.convertToString = convertToString;
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXVCO0FBQ3ZCLDBEQUE0QjtBQVluQixjQVpGLG1CQUFHLENBWUU7QUFYWiwwREFBNEI7QUFXZCxjQVhQLG1CQUFHLENBV087QUFWakIsc0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsa0RBQW9DO0FBRXBDLDJFQUF1RTtBQU1oRSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUE5QyxRQUFBLFNBQVMsYUFBcUM7QUFDcEQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBM0MsUUFBQSxVQUFVLGNBQWlDO0FBQ2pELE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQXRDLFFBQUEsU0FBUyxhQUE2QjtBQUM1QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBQW5FLFFBQUEsbUJBQW1CLHVCQUFnRDtBQUN6RSxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDM0QsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGtCQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUM7QUFEbkMsUUFBQSw4QkFBOEIsa0NBQ0s7QUFDekMsTUFBTSxP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LFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUxXLFFBQUEsZUFBZSxtQkFLMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGdldCBmcm9tICdnZXQtdmFsdWUnO1xuaW1wb3J0IHNldCBmcm9tICdzZXQtdmFsdWUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHNoYTI1NiBmcm9tICdzaGEyNTYnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSwgUnVkZGVyU3RhY2tFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEluc3RydW1lbnRhdGlvbkVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2luc3RydW1lbnRhdGlvbl9lcnJvcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5MSU5FUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHsgZ2V0LCBzZXQgfTtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWQgPSAoeDogdW5rbm93bikgPT4gIV8uaXNVbmRlZmluZWQoeCk7XG5leHBvcnQgY29uc3QgaXNOb3RFbXB0eSA9ICh4OiB1bmtub3duKSA9PiAhXy5pc0VtcHR5KHgpO1xuZXhwb3J0IGNvbnN0IGlzTm90TnVsbCA9ICh4OiB1bmtub3duKSA9PiB4ICE9IG51bGw7XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkQW5kTm90TnVsbCA9ICh4OiB1bmtub3duKSA9PiBpc0RlZmluZWQoeCkgJiYgaXNOb3ROdWxsKHgpO1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSA9ICh4OiB1bmtub3duKSA9PlxuICBpc0RlZmluZWQoeCkgJiYgaXNOb3ROdWxsKHgpICYmIGlzTm90RW1wdHkoeCk7XG5leHBvcnQgY29uc3QgaXNCbGFuayA9ICh2YWx1ZTogdW5rbm93bikgPT4gXy5pc0VtcHR5KF8udG9TdHJpbmcodmFsdWUpKTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY29uc3QgcmVtb3ZlVW5kZWZpbmVkVmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVOdWxsVmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNOb3ROdWxsKTtcbn07XG5leHBvcnQgY29uc3QgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZEFuZE5vdE51bGwpO1xufTtcbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkpO1xufTtcblxuLyoqXG4gKiBUaGUgZmxhdHRlbk1hcCBmdW5jdGlvbiB0YWtlcyBhIGNvbGxlY3Rpb24gYXMgaW5wdXQgYW5kIHJldHVybnMgYSBmbGF0dGVuZWQgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbi4gSWYgdGhlIGlucHV0IGlzIG5vdCBhbiBhcnJheSBvciBhbiBvYmplY3QsIGl0IGlzIHJldHVybmVkIGFzIGlzLiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBmbGF0TWFwIGZ1bmN0aW9uIGZyb20gdGhlIGxvZGFzaCBsaWJyYXJ5IHRvIGZsYXR0ZW4gdGhlIGNvbGxlY3Rpb24uXG4gKiBAcGFyYW0gY29sbGVjdGlvblxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGZsYXR0ZW5NYXAgPSAoY29sbGVjdGlvbjogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNBcnJheShjb2xsZWN0aW9uKSAmJiAhXy5pc09iamVjdChjb2xsZWN0aW9uKSkgcmV0dXJuIGNvbGxlY3Rpb247XG4gIHJldHVybiBfLmZsYXRNYXAoY29sbGVjdGlvbiwgKHgpID0+IHgpO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHRU5FUklDIFVUTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBnZXRFdmVudFRpbWUgPSAobWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudCkgPT4ge1xuICBpZiAoIW1lc3NhZ2UudGltZXN0YW1wICYmICFtZXNzYWdlLm9yaWdpbmFsVGltZXN0YW1wKVxuICAgIHRocm93IG5ldyBJbnN0cnVtZW50YXRpb25FcnJvcignRXZlbnQgZG9lcyBub3QgaGF2ZSB0aW1lc3RhbXAgb3Igb3JpZ2luYWxUaW1lc3RhbXAnKTtcbiAgdHJ5IHtcbiAgICBpZiAobWVzc2FnZS50aW1lc3RhbXApIHJldHVybiBuZXcgRGF0ZShtZXNzYWdlLnRpbWVzdGFtcCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGluIHBhcnNpbmcgdGltZXN0YW1wJywgZSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKG1lc3NhZ2Uub3JpZ2luYWxUaW1lc3RhbXApO1xufTtcblxuZXhwb3J0IGNvbnN0IGJhc2U2NENvbnZlcnRvciA9IChzdHJpbmc6IHN0cmluZykgPT4gQnVmZmVyLmZyb20oc3RyaW5nKS50b1N0cmluZygnYmFzZTY0Jyk7XG5cbi8vIHJldHVybiBhIHZhbGlkIFVSTCBvYmplY3QgaWYgY29ycmVjdCBlbHNlIG51bGxcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVXJsID0gKHVybDogc3RyaW5nIHwgVVJMKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzdHJpcFRyYWlsaW5nU2xhc2ggPSAoc3RyOiBzdHJpbmcpID0+XG4gIHN0ciAmJiBzdHIuZW5kc1dpdGgoJy8nKSA/IHN0ci5zbGljZSgwLCAtMSkgOiBzdHI7XG5cbmV4cG9ydCBjb25zdCBpc1ByaW1pdGl2ZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIHJldHVybiBhcmcgPT0gbnVsbCB8fCAodHlwZSAhPT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gJ2Z1bmN0aW9uJyk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0geyp9IGFyZ1xuICogQHJldHVybnMge3R5cGV9XG4gKlxuICogUmV0dXJucyB0eXBlIG9mIHBhc3NlZCBhcmdcbiAqIGZvciBudWxsIGFyZ3NzIHJldHVybnMgXCJOVUxMXCIgaW5zdGVkIG9mIFwib2JqZWN0XCJcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUeXBlID0gKGFyZzogdW5rbm93bikgPT4ge1xuICBjb25zdCB0eXBlID0gdHlwZW9mIGFyZztcbiAgaWYgKGFyZyA9PSBudWxsKSB7XG4gICAgcmV0dXJuICdOVUxMJztcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgcmV0dXJuICdhcnJheSc7XG4gIH1cbiAgcmV0dXJuIHR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAodmFsdWU6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT09ICdvYmplY3QnIHx8IHR5cGUgPT09ICdmdW5jdGlvbicpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKGlucHV0OiB1bmtub3duKSA9PiBfLmlzRW1wdHkoXy50b1N0cmluZyhpbnB1dCkudHJpbSgpKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgZm9yIGVtcHR5IG9iamVjdCB7fVxuICogQHBhcmFtIHsqfSBvYmpcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBpc0VtcHR5T2JqZWN0ID0gKG9iajogYW55KSA9PiB7XG4gIGlmICghb2JqKSB7XG4gICAgbG9nZ2VyLndhcm4oJ2lucHV0IGlzIHVuZGVmaW5lZCBvciBudWxsJyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0byBjaGVjayBpZiB2YWx1ZSBpcyBEZWZpbmVkLCBOb3QgbnVsbCBhbmQgTm90IEVtcHR5LlxuICogQ3JlYXRlIHRoaXMgZnVuY3Rpb24sIEJlY2F1c2UgZXhpc3RpbmcgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KDEyMykgaXMgcmV0dXJuaW5nIGZhbHNlIGR1ZSB0byBsb2Rhc2ggXy5pc0VtcHR5IGZ1bmN0aW9uLlxuICogXy5pc0VtcHR5IGlzIHVzZWQgdG8gZGV0ZWN0IGVtcHR5IGNvbGxlY3Rpb25zL29iamVjdHMgYW5kIGl0IHdpbGwgcmV0dXJuIHRydWUgZm9yIEludGVnZXIsIEJvb2xlYW4gdmFsdWVzLlxuICogcmVmOiBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9pc3N1ZXMvNDk2XG4gKiBAcGFyYW0geyp9IHZhbHVlIDEyM1xuICogQHJldHVybnMgeWVzXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkgPSAodmFsdWU6IHVua25vd24pID0+XG4gICEoXG4gICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgTnVtYmVyLmlzTmFOKHZhbHVlKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMClcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50ID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KTtcbn07XG5cbi8vIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5ID0gKGFycmF5cywgZnJvbUtleSA9ICdmcm9tJywgdG9LZXkgPSAndG8nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPVxuICAgICAgICBhcnJheVt0b0tleV07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgZGVzdGluYXRpb24uQ29uZmlnLmR5bmFtaWNNYXAgYXJyYXlzIHRvIGhhc2hNYXBcbiAqIHdoZXJlIHZhbHVlIGlzIGFuIGFycmF5XG4gKiBAcGFyYW0gIHt9IGFycmF5cyBbe1wiZnJvbVwiOlwicHJvcDFcIixcInRvXCI6XCJ2YWwxXCJ9LHtcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMlwifSx7XCJmcm9tXCI6XCJwcm9wMlwiLFwidG9cIjpcInZhbDJcIn1dXG4gKiBAcGFyYW0gIHt9IGZyb21LZXk9XCJmcm9tXCJcbiAqIEBwYXJhbSAge30gdG9LZXk9XCJ0b1wiXG4gKiBAcGFyYW0gIHt9IGlzTG93ZXJDYXNlPXRydWVcbiAqIEBwYXJhbSAge30gcmV0dXJuIGhhc2htYXAge1wicHJvcDFcIjpbXCJ2YWwxXCIsXCJ2YWwyXCJdLFwicHJvcDJcIjpbXCJ2YWwyXCJdfVxuICovXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUgPSAoXG4gIGFycmF5czogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfVtdLFxuICBmcm9tS2V5ID0gJ2Zyb20nLFxuICB0b0tleSA9ICd0bycsXG4gIGlzTG93ZXJDYXNlID0gdHJ1ZSxcbikgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgY29uc3Qga2V5ID0gaXNMb3dlckNhc2VcbiAgICAgICAgPyBhcnJheVtmcm9tS2V5XS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gICAgICAgIDogYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50cmltKCk7XG5cbiAgICAgIGlmIChoYXNoTWFwW2tleV0pIHtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzaE1hcFtrZXldID0gbmV3IFNldCgpO1xuICAgICAgICBoYXNoTWFwW2tleV0uYWRkKGFycmF5W3RvS2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIEZvcm1hdCB0aGUgYXJyYXlzIHRvIGhhc2hNYXAgd2l0aCBrZXkgYXMgYGZyb21LZXlgIGFuZCB2YWx1ZSBhcyBPYmplY3RcbiAqIEBwYXJhbSB7Kn0gYXJyYXlzIFt7XCJpZFwiOlwiYTBiOGVmZTEtYzgyOC00YzYzLTg4NTAtMGQwNzQyODg4ZjlkXCIsXCJuYW1lXCI6XCJFbWFpbFwiLFwidHlwZVwiOlwiZW1haWxcIixcInR5cGVfY29uZmlnXCI6e30sXCJkYXRlX2NyZWF0ZWRcIjpcIjE2NjIyMjU4NDAyODRcIixcImhpZGVfZnJvbV9ndWVzdHNcIjpmYWxzZSxcInJlcXVpcmVkXCI6ZmFsc2V9XVxuICogQHBhcmFtIHsqfSBmcm9tS2V5IG5hbWVcbiAqIEBwYXJhbSB7Kn0gaXNMb3dlckNhc2UgZmFsc2VcbiAqIEByZXR1cm5zIC8vIHtcIkVtYWlsXCI6e1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoVmFsdWVBc09iamVjdCA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIGlzTG93ZXJDYXNlID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBoYXNoTWFwID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGFycmF5cykpIHtcbiAgICBhcnJheXMuZm9yRWFjaCgoYXJyYXkpID0+IHtcbiAgICAgIGlmIChpc0VtcHR5KGFycmF5W2Zyb21LZXldKSkgcmV0dXJuO1xuICAgICAgaGFzaE1hcFtpc0xvd2VyQ2FzZSA/IGFycmF5W2Zyb21LZXldLnRvTG93ZXJDYXNlKCkgOiBhcnJheVtmcm9tS2V5XV0gPSBhcnJheTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gaGFzaE1hcDtcbn07XG5cbi8qKlxuICogUmV0cmlldmVzIGEgdmFsdWUgZnJvbSBhIG1lc3NhZ2Ugb2JqZWN0IGJhc2VkIG9uIGEgZ2l2ZW4ga2V5LiBJdCBzZWFyY2hlcyBmb3IgdGhlIGtleSBpbiB0aGUgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMgb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IGluIHRoYXQgb3JkZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5tZXNzYWdlIC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcywgdHJhaXRzLCBhbmQgY29udGV4dC50cmFpdHMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5rZXkgLSBUaGUga2V5IHRvIHNlYXJjaCBmb3IgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0LlxuICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSBmb3VuZCBpbiB0aGUgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBnaXZlbiBrZXksIG9yIG51bGwgaWYgdGhlIGtleSBpcyBub3QgZm91bmQgb3IgdGhlIHZhbHVlIGlzIG51bGwuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMgPSAoeyBtZXNzYWdlLCBrZXkgfSkgPT4ge1xuICBjb25zdCBrZXlTZXQgPSBbJ3Byb3BlcnRpZXMnLCAndHJhaXRzJywgJ2NvbnRleHQudHJhaXRzJ107XG5cbiAgY29uc3QgdmFsID0gXy5maW5kKFxuICAgIF8ubWFwKGtleVNldCwgKGspID0+IGdldChtZXNzYWdlLCBgJHtrfS4ke2tleX1gKSksXG4gICAgKHYpID0+ICFfLmlzTmlsKHYpLFxuICApO1xuICByZXR1cm4gIV8uaXNOaWwodmFsKSA/IHZhbCA6IG51bGw7XG59O1xuXG4vKipcbiAqIEZsYXR0ZW5zIGEgSlNPTiBvYmplY3QgaW50byBhIHNpbmdsZS1sZXZlbCBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgSlNPTiBvYmplY3QgdG8gYmUgZmxhdHRlbmVkLlxuICogQHBhcmFtIHNlcGFyYXRvciAtIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSB0aGUga2V5cyBpbiB0aGUgZmxhdHRlbmVkIG9iamVjdC4gRGVmYXVsdCBpcyAnLicuXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIHVzZWQgdG8gZmxhdHRlbiBhcnJheXMuIElmIHNldCB0byAnc3RyaWN0JywgdGhlIGFycmF5IGluZGljZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZmxhdHRlbmVkIGtleXMuIERlZmF1bHQgaXMgJ25vcm1hbCcuXG4gKiBAcmV0dXJucyBUaGUgZmxhdHRlbmVkIEpTT04gb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbkpzb24gPSAoZGF0YTogdW5rbm93biwgc2VwYXJhdG9yID0gJy4nLCBtb2RlID0gJ25vcm1hbCcpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0ge307XG5cbiAgLy8gYSByZWN1cnNpdmUgZnVuY3Rpb24gdG8gbG9vcCB0aHJvdWdoIHRoZSBhcnJheSBvZiB0aGUgZGF0YVxuICBjb25zdCByZWN1cnNlID0gKGN1ciwgcHJvcCkgPT4ge1xuICAgIGxldCBpO1xuICAgIGlmIChPYmplY3QoY3VyKSAhPT0gY3VyKSB7XG4gICAgICByZXN1bHRbcHJvcF0gPSBjdXI7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGN1cikpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKG1vZGUgPT09ICdzdHJpY3QnKSB7XG4gICAgICAgICAgcmVjdXJzZShjdXJbaV0sIGAke3Byb3B9JHtzZXBhcmF0b3J9JHtpfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfVske2l9XWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY3VyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXN1bHRbcHJvcF0gPSBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzRW1wdHlGbGFnID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5rZXlzKGN1cikuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGlzRW1wdHlGbGFnID0gZmFsc2U7XG4gICAgICAgIHJlY3Vyc2UoY3VyW2tleV0sIHByb3AgPyBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7a2V5fWAgOiBrZXkpO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXNFbXB0eUZsYWcgJiYgcHJvcCkgcmVzdWx0W3Byb3BdID0ge307XG4gICAgfVxuICB9O1xuXG4gIHJlY3Vyc2UoZGF0YSwgJycpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciBhIGdpdmVuIHRpbWV6b25lLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB0aW1lem9uZSB2YWx1ZSBmb3Igd2hpY2ggdGhlIG9mZnNldCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkLlxuICogQHJldHVybnMgVGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciB0aGUgZ2l2ZW4gdGltZXpvbmUuIElmIHRoZSB0aW1lem9uZSBpcyBpbnZhbGlkIG9yIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0SW5TZWMoJ0FzaWEvQ2FsY3V0dGEnKTtcbiAqIGNvbnNvbGUubG9nKG9mZnNldCk7IC8vIE91dHB1dDogMTk4MDBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9mZnNldEluU2VjID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbmFtZSA9IG1vbWVudC50ei56b25lKHZhbHVlKTtcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCB4ID0gbW9tZW50KCkudHoodmFsdWUpLmZvcm1hdCgnWicpO1xuICAgIGNvbnN0IHNwbGl0ID0geC5zcGxpdCgnOicpO1xuICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoc3BsaXRbMF0pO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlcihzcGxpdFsxXSk7XG4gICAgbGV0IHNlYyA9IDA7XG4gICAgc2VjID0gaG91ciA8IDAgPyAtMSAqIChob3VyICogLTYwICogNjAgKyBtaW4gKiA2MCkgOiBob3VyICogNjAgKiA2MCArIG1pbiAqIDYwO1xuICAgIHJldHVybiBzZWM7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBkYXRlIHN0cmluZyBpbnRvIGEgZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqIElmIGEgZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgdXNlcyB0aGUgbW9tZW50IGxpYnJhcnkgdG8gZm9ybWF0IHRoZSBkYXRlLlxuICogSWYgbm8gZm9ybWF0IHN0cmluZyBpcyBwcm92aWRlZCwgaXQgcmV0dXJucyB0aGUgdGltZXN0YW1wIG9mIHRoZSBkYXRlLlxuICogQHBhcmFtIGRhdGVTdHIgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gYmUgZm9ybWF0dGVkLlxuICogQHBhcmFtIGZvcm1hdCAtIChPcHRpb25hbCkgVGhlIGZvcm1hdCBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgZGF0ZS5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGF0ZSBhcyBhIHN0cmluZyBpZiBhIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsXG4gKiAgICAgICAgICBvdGhlcndpc2UgdGhlIHRpbWVzdGFtcCBvZiB0aGUgZGF0ZSBhcyBhIG51bWJlci5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVTdGFtcCA9IChkYXRlU3RyOiBzdHJpbmcsIGZvcm1hdD86IHN0cmluZykgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gIC8vIG1vbWVudCBmb3JtYXQgaXMgcGFzc2VkLiBmb3JtYXQgYWNjb3JkaW5nbHlcbiAgaWYgKGZvcm1hdCkge1xuICAgIHJldHVybiBtb21lbnQudXRjKGRhdGUpLmZvcm1hdChmb3JtYXQpO1xuICB9XG5cbiAgLy8gcmV0dXJuIGRlZmF1bHQgZm9ybWF0XG4gIHJldHVybiBkYXRlLmdldFRpbWUoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNoVG9TaGEyNTYgPSAodmFsdWU6IHN0cmluZyB8IEJ1ZmZlciB8IG51bWJlcltdKSA9PiBzaGEyNTYodmFsdWUpO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSB1c2luZyB0aGUgYGNyeXB0by5yYW5kb21VVUlEKClgIG1ldGhvZC5cbiAqIFRoZSBgZGlzYWJsZUVudHJvcHlDYWNoZWAgb3B0aW9uIGlzIHNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBjYWNoaW5nIG9mIGdlbmVyYXRlZCBVVUlEcy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIHJhbmRvbWx5IGdlbmVyYXRlZCBVVUlELlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjY3J5cHRvcmFuZG9tdXVpZG9wdGlvbnM6fjp0ZXh0PW9wdGlvbnMlMjAlM0NPYmplY3QlM0UtLGRpc2FibGVFbnRyb3B5Q2FjaGUsLSUzQ2Jvb2xlYW4lM0UlMjBCeX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlVVVJRCA9ICgpOiBzdHJpbmcgPT4gY3J5cHRvLnJhbmRvbVVVSUQoeyBkaXNhYmxlRW50cm9weUNhY2hlOiB0cnVlIH0pO1xuXG4vLyBSb3V0ZXIgdHJhbnNmb3JtZXJcbi8vIEVycm9yIHJlc3BvbnNlc1xuZXhwb3J0IGNvbnN0IGdldEVycm9yUmVzcEV2ZW50cyA9IChcbiAgbWV0YWRhdGE6IE1ldGFkYXRhW10sXG4gIHN0YXR1c0NvZGU6IG51bWJlcixcbiAgZXJyb3I6IHN0cmluZyxcbiAgc3RhdFRhZ3M6IE9iamVjdCxcbiAgYmF0Y2hlZDogYm9vbGVhbiA9IGZhbHNlLFxuKToge1xuICBtZXRhZGF0YTogTWV0YWRhdGFbXTtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBlcnJvcjogc3RyaW5nO1xuICBzdGF0VGFnczogT2JqZWN0O1xuICBiYXRjaGVkOiBib29sZWFuO1xufSA9PiAoe1xuICBtZXRhZGF0YSxcbiAgYmF0Y2hlZCxcbiAgc3RhdHVzQ29kZSxcbiAgZXJyb3IsXG4gIHN0YXRUYWdzLFxufSk7XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9TdHJpbmcgPSAodmFsdWU6IGFueSkgPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufTtcbiJdfQ==
376
+ const uuid_namespace = 'e76c6e51-06f9-4222-9636-5aba7e3a84b6';
377
+ const uuidv5 = (val) => (0, uuid_1.v5)(val, uuid_namespace);
378
+ exports.uuidv5 = uuidv5;
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXVCO0FBQ3ZCLDBEQUE0QjtBQWFuQixjQWJGLG1CQUFHLENBYUU7QUFaWiwwREFBNEI7QUFZZCxjQVpQLG1CQUFHLENBWU87QUFYakIsc0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsK0JBQTBCO0FBQzFCLGtEQUFvQztBQUVwQywyRUFBdUU7QUFNaEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBOUMsUUFBQSxTQUFTLGFBQXFDO0FBQ3BELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQTNDLFFBQUEsVUFBVSxjQUFpQztBQUNqRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUF0QyxRQUFBLFNBQVMsYUFBNkI7QUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsSUFBQSxpQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUFuRSxRQUFBLG1CQUFtQix1QkFBZ0Q7QUFDekUsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQzNELElBQUEsaUJBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFBLGlCQUFTLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBQSxrQkFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDO0FBRG5DLFFBQUEsOEJBQThCLGtDQUNL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QUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFMVyxRQUFBLGVBQWUsbUJBSzFCO0FBRUYsTUFBTSxjQUFjLEdBQUcsc0NBQXNDLENBQUM7QUFDdkQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLElBQUEsU0FBRSxFQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUFsRCxRQUFBLE1BQU0sVUFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGdldCBmcm9tICdnZXQtdmFsdWUnO1xuaW1wb3J0IHNldCBmcm9tICdzZXQtdmFsdWUnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHNoYTI1NiBmcm9tICdzaGEyNTYnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgdjUgfSBmcm9tICd1dWlkJztcbmltcG9ydCAqIGFzIGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEsIFJ1ZGRlclN0YWNrRXZlbnQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJbnN0cnVtZW50YXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy9pbnN0cnVtZW50YXRpb25fZXJyb3InO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOTElORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB7IGdldCwgc2V0IH07XG5leHBvcnQgY29uc3QgaXNEZWZpbmVkID0gKHg6IHVua25vd24pID0+ICFfLmlzVW5kZWZpbmVkKHgpO1xuZXhwb3J0IGNvbnN0IGlzTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT4gIV8uaXNFbXB0eSh4KTtcbmV4cG9ydCBjb25zdCBpc05vdE51bGwgPSAoeDogdW5rbm93bikgPT4geCAhPSBudWxsO1xuZXhwb3J0IGNvbnN0IGlzRGVmaW5lZEFuZE5vdE51bGwgPSAoeDogdW5rbm93bikgPT4gaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KTtcbmV4cG9ydCBjb25zdCBpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkgPSAoeDogdW5rbm93bikgPT5cbiAgaXNEZWZpbmVkKHgpICYmIGlzTm90TnVsbCh4KSAmJiBpc05vdEVtcHR5KHgpO1xuZXhwb3J0IGNvbnN0IGlzQmxhbmsgPSAodmFsdWU6IHVua25vd24pID0+IF8uaXNFbXB0eShfLnRvU3RyaW5nKHZhbHVlKSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTnVsbFZhbHVlcyA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzTm90TnVsbCk7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMgPSAob2JqOiB1bmtub3duKSA9PiB7XG4gIGlmICghXy5pc09iamVjdChvYmopKSByZXR1cm4gb2JqO1xuICByZXR1cm4gXy5waWNrQnkob2JqLCBpc0RlZmluZWRBbmROb3ROdWxsKTtcbn07XG5leHBvcnQgY29uc3QgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzID0gKG9iajogdW5rbm93bikgPT4ge1xuICBpZiAoIV8uaXNPYmplY3Qob2JqKSkgcmV0dXJuIG9iajtcbiAgcmV0dXJuIF8ucGlja0J5KG9iaiwgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KTtcbn07XG5cbi8qKlxuICogVGhlIGZsYXR0ZW5NYXAgZnVuY3Rpb24gdGFrZXMgYSBjb2xsZWN0aW9uIGFzIGlucHV0IGFuZCByZXR1cm5zIGEgZmxhdHRlbmVkIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb24uIElmIHRoZSBpbnB1dCBpcyBub3QgYW4gYXJyYXkgb3IgYW4gb2JqZWN0LCBpdCBpcyByZXR1cm5lZCBhcyBpcy4gT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgZmxhdE1hcCBmdW5jdGlvbiBmcm9tIHRoZSBsb2Rhc2ggbGlicmFyeSB0byBmbGF0dGVuIHRoZSBjb2xsZWN0aW9uLlxuICogQHBhcmFtIGNvbGxlY3Rpb25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuTWFwID0gKGNvbGxlY3Rpb246IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzQXJyYXkoY29sbGVjdGlvbikgJiYgIV8uaXNPYmplY3QoY29sbGVjdGlvbikpIHJldHVybiBjb2xsZWN0aW9uO1xuICByZXR1cm4gXy5mbGF0TWFwKGNvbGxlY3Rpb24sICh4KSA9PiB4KTtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0VORVJJQyBVVExJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgZ2V0RXZlbnRUaW1lID0gKG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQpID0+IHtcbiAgaWYgKCFtZXNzYWdlLnRpbWVzdGFtcCAmJiAhbWVzc2FnZS5vcmlnaW5hbFRpbWVzdGFtcClcbiAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoJ0V2ZW50IGRvZXMgbm90IGhhdmUgdGltZXN0YW1wIG9yIG9yaWdpbmFsVGltZXN0YW1wJyk7XG4gIHRyeSB7XG4gICAgaWYgKG1lc3NhZ2UudGltZXN0YW1wKSByZXR1cm4gbmV3IERhdGUobWVzc2FnZS50aW1lc3RhbXApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdFcnJvciBpbiBwYXJzaW5nIHRpbWVzdGFtcCcsIGUpO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShtZXNzYWdlLm9yaWdpbmFsVGltZXN0YW1wKTtcbn07XG5cbmV4cG9ydCBjb25zdCBiYXNlNjRDb252ZXJ0b3IgPSAoc3RyaW5nOiBzdHJpbmcpID0+IEJ1ZmZlci5mcm9tKHN0cmluZykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4vLyByZXR1cm4gYSB2YWxpZCBVUkwgb2JqZWN0IGlmIGNvcnJlY3QgZWxzZSBudWxsXG5leHBvcnQgY29uc3QgaXNWYWxpZFVybCA9ICh1cmw6IHN0cmluZyB8IFVSTCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBuZXcgVVJMKHVybCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RyaXBUcmFpbGluZ1NsYXNoID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIgJiYgc3RyLmVuZHNXaXRoKCcvJykgPyBzdHIuc2xpY2UoMCwgLTEpIDogc3RyO1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAoYXJnOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXJnO1xuICByZXR1cm4gYXJnID09IG51bGwgfHwgKHR5cGUgIT09ICdvYmplY3QnICYmIHR5cGUgIT09ICdmdW5jdGlvbicpO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHsqfSBhcmdcbiAqIEByZXR1cm5zIHt0eXBlfVxuICpcbiAqIFJldHVybnMgdHlwZSBvZiBwYXNzZWQgYXJnXG4gKiBmb3IgbnVsbCBhcmdzcyByZXR1cm5zIFwiTlVMTFwiIGluc3RlZCBvZiBcIm9iamVjdFwiXG4gKlxuICovXG5leHBvcnQgY29uc3QgZ2V0VHlwZSA9IChhcmc6IHVua25vd24pID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmIChhcmcgPT0gbnVsbCkge1xuICAgIHJldHVybiAnTlVMTCc7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgIHJldHVybiAnYXJyYXknO1xuICB9XG4gIHJldHVybiB0eXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09PSAnb2JqZWN0JyB8fCB0eXBlID09PSAnZnVuY3Rpb24nKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IChpbnB1dDogdW5rbm93bikgPT4gXy5pc0VtcHR5KF8udG9TdHJpbmcoaW5wdXQpLnRyaW0oKSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGZvciBlbXB0eSBvYmplY3Qge31cbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgaXNFbXB0eU9iamVjdCA9IChvYmo6IGFueSkgPT4ge1xuICBpZiAoIW9iaikge1xuICAgIGxvZ2dlci53YXJuKCdpbnB1dCBpcyB1bmRlZmluZWQgb3IgbnVsbCcpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2hlY2sgaWYgdmFsdWUgaXMgRGVmaW5lZCwgTm90IG51bGwgYW5kIE5vdCBFbXB0eS5cbiAqIENyZWF0ZSB0aGlzIGZ1bmN0aW9uLCBCZWNhdXNlIGV4aXN0aW5nIGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSgxMjMpIGlzIHJldHVybmluZyBmYWxzZSBkdWUgdG8gbG9kYXNoIF8uaXNFbXB0eSBmdW5jdGlvbi5cbiAqIF8uaXNFbXB0eSBpcyB1c2VkIHRvIGRldGVjdCBlbXB0eSBjb2xsZWN0aW9ucy9vYmplY3RzIGFuZCBpdCB3aWxsIHJldHVybiB0cnVlIGZvciBJbnRlZ2VyLCBCb29sZWFuIHZhbHVlcy5cbiAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvaXNzdWVzLzQ5NlxuICogQHBhcmFtIHsqfSB2YWx1ZSAxMjNcbiAqIEByZXR1cm5zIHllc1xuICovXG5leHBvcnQgY29uc3QgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5ID0gKHZhbHVlOiB1bmtub3duKSA9PlxuICAhKFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgIE51bWJlci5pc05hTih2YWx1ZSkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApXG4gICk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCA9IChvYmo6IHVua25vd24pID0+IHtcbiAgaWYgKCFfLmlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIHJldHVybiBfLnBpY2tCeShvYmosIGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSk7XG59O1xuXG4vLyBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG5leHBvcnQgY29uc3QgZ2V0SGFzaEZyb21BcnJheSA9IChhcnJheXMsIGZyb21LZXkgPSAnZnJvbScsIHRvS2V5ID0gJ3RvJywgaXNMb3dlckNhc2UgPSB0cnVlKSA9PiB7XG4gIGNvbnN0IGhhc2hNYXAgPSB7fTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXlzKSkge1xuICAgIGFycmF5cy5mb3JFYWNoKChhcnJheSkgPT4ge1xuICAgICAgaWYgKGlzRW1wdHkoYXJyYXlbZnJvbUtleV0pKSByZXR1cm47XG4gICAgICBoYXNoTWFwW2lzTG93ZXJDYXNlID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID1cbiAgICAgICAgYXJyYXlbdG9LZXldO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGRlc3RpbmF0aW9uLkNvbmZpZy5keW5hbWljTWFwIGFycmF5cyB0byBoYXNoTWFwXG4gKiB3aGVyZSB2YWx1ZSBpcyBhbiBhcnJheVxuICogQHBhcmFtICB7fSBhcnJheXMgW3tcImZyb21cIjpcInByb3AxXCIsXCJ0b1wiOlwidmFsMVwifSx7XCJmcm9tXCI6XCJwcm9wMVwiLFwidG9cIjpcInZhbDJcIn0se1wiZnJvbVwiOlwicHJvcDJcIixcInRvXCI6XCJ2YWwyXCJ9XVxuICogQHBhcmFtICB7fSBmcm9tS2V5PVwiZnJvbVwiXG4gKiBAcGFyYW0gIHt9IHRvS2V5PVwidG9cIlxuICogQHBhcmFtICB7fSBpc0xvd2VyQ2FzZT10cnVlXG4gKiBAcGFyYW0gIHt9IHJldHVybiBoYXNobWFwIHtcInByb3AxXCI6W1widmFsMVwiLFwidmFsMlwiXSxcInByb3AyXCI6W1widmFsMlwiXX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlID0gKFxuICBhcnJheXM6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH1bXSxcbiAgZnJvbUtleSA9ICdmcm9tJyxcbiAgdG9LZXkgPSAndG8nLFxuICBpc0xvd2VyQ2FzZSA9IHRydWUsXG4pID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGNvbnN0IGtleSA9IGlzTG93ZXJDYXNlXG4gICAgICAgID8gYXJyYXlbZnJvbUtleV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICAgICAgICA6IGFycmF5W2Zyb21LZXldLnRvU3RyaW5nKCkudHJpbSgpO1xuXG4gICAgICBpZiAoaGFzaE1hcFtrZXldKSB7XG4gICAgICAgIGhhc2hNYXBba2V5XS5hZGQoYXJyYXlbdG9LZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc2hNYXBba2V5XSA9IG5ldyBTZXQoKTtcbiAgICAgICAgaGFzaE1hcFtrZXldLmFkZChhcnJheVt0b0tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBoYXNoTWFwO1xufTtcblxuLyoqXG4gKiBGb3JtYXQgdGhlIGFycmF5cyB0byBoYXNoTWFwIHdpdGgga2V5IGFzIGBmcm9tS2V5YCBhbmQgdmFsdWUgYXMgT2JqZWN0XG4gKiBAcGFyYW0geyp9IGFycmF5cyBbe1wiaWRcIjpcImEwYjhlZmUxLWM4MjgtNGM2My04ODUwLTBkMDc0Mjg4OGY5ZFwiLFwibmFtZVwiOlwiRW1haWxcIixcInR5cGVcIjpcImVtYWlsXCIsXCJ0eXBlX2NvbmZpZ1wiOnt9LFwiZGF0ZV9jcmVhdGVkXCI6XCIxNjYyMjI1ODQwMjg0XCIsXCJoaWRlX2Zyb21fZ3Vlc3RzXCI6ZmFsc2UsXCJyZXF1aXJlZFwiOmZhbHNlfV1cbiAqIEBwYXJhbSB7Kn0gZnJvbUtleSBuYW1lXG4gKiBAcGFyYW0geyp9IGlzTG93ZXJDYXNlIGZhbHNlXG4gKiBAcmV0dXJucyAvLyB7XCJFbWFpbFwiOntcImlkXCI6XCJhMGI4ZWZlMS1jODI4LTRjNjMtODg1MC0wZDA3NDI4ODhmOWRcIixcIm5hbWVcIjpcIkVtYWlsXCIsXCJ0eXBlXCI6XCJlbWFpbFwiLFwidHlwZV9jb25maWdcIjp7fSxcImRhdGVfY3JlYXRlZFwiOlwiMTY2MjIyNTg0MDI4NFwiLFwiaGlkZV9mcm9tX2d1ZXN0c1wiOmZhbHNlLFwicmVxdWlyZWRcIjpmYWxzZX19XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIYXNoRnJvbUFycmF5V2l0aFZhbHVlQXNPYmplY3QgPSAoYXJyYXlzLCBmcm9tS2V5ID0gJ2Zyb20nLCBpc0xvd2VyQ2FzZSA9IHRydWUpID0+IHtcbiAgY29uc3QgaGFzaE1hcCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnJheXMpKSB7XG4gICAgYXJyYXlzLmZvckVhY2goKGFycmF5KSA9PiB7XG4gICAgICBpZiAoaXNFbXB0eShhcnJheVtmcm9tS2V5XSkpIHJldHVybjtcbiAgICAgIGhhc2hNYXBbaXNMb3dlckNhc2UgPyBhcnJheVtmcm9tS2V5XS50b0xvd2VyQ2FzZSgpIDogYXJyYXlbZnJvbUtleV1dID0gYXJyYXk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGhhc2hNYXA7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBhIHZhbHVlIGZyb20gYSBtZXNzYWdlIG9iamVjdCBiYXNlZCBvbiBhIGdpdmVuIGtleS4gSXQgc2VhcmNoZXMgZm9yIHRoZSBrZXkgaW4gdGhlIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMubWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMsIHRyYWl0cywgYW5kIGNvbnRleHQudHJhaXRzLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IC0gVGhlIGtleSB0byBzZWFyY2ggZm9yIGluIHRoZSBtZXNzYWdlIG9iamVjdC5cbiAqIEByZXR1cm5zIHsqfSBUaGUgdmFsdWUgZm91bmQgaW4gdGhlIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZ2l2ZW4ga2V5LCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kIG9yIHRoZSB2YWx1ZSBpcyBudWxsLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzID0gKHsgbWVzc2FnZSwga2V5IH0pID0+IHtcbiAgY29uc3Qga2V5U2V0ID0gWydwcm9wZXJ0aWVzJywgJ3RyYWl0cycsICdjb250ZXh0LnRyYWl0cyddO1xuXG4gIGNvbnN0IHZhbCA9IF8uZmluZChcbiAgICBfLm1hcChrZXlTZXQsIChrKSA9PiBnZXQobWVzc2FnZSwgYCR7a30uJHtrZXl9YCkpLFxuICAgICh2KSA9PiAhXy5pc05pbCh2KSxcbiAgKTtcbiAgcmV0dXJuICFfLmlzTmlsKHZhbCkgPyB2YWwgOiBudWxsO1xufTtcblxuLyoqXG4gKiBGbGF0dGVucyBhIEpTT04gb2JqZWN0IGludG8gYSBzaW5nbGUtbGV2ZWwgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gVGhlIEpTT04gb2JqZWN0IHRvIGJlIGZsYXR0ZW5lZC5cbiAqIEBwYXJhbSBzZXBhcmF0b3IgLSBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGtleXMgaW4gdGhlIGZsYXR0ZW5lZCBvYmplY3QuIERlZmF1bHQgaXMgJy4nLlxuICogQHBhcmFtIG1vZGUgLSBUaGUgbW9kZSB1c2VkIHRvIGZsYXR0ZW4gYXJyYXlzLiBJZiBzZXQgdG8gJ3N0cmljdCcsIHRoZSBhcnJheSBpbmRpY2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGZsYXR0ZW5lZCBrZXlzLiBEZWZhdWx0IGlzICdub3JtYWwnLlxuICogQHJldHVybnMgVGhlIGZsYXR0ZW5lZCBKU09OIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGZsYXR0ZW5Kc29uID0gKGRhdGE6IHVua25vd24sIHNlcGFyYXRvciA9ICcuJywgbW9kZSA9ICdub3JtYWwnKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gIC8vIGEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGxvb3AgdGhyb3VnaCB0aGUgYXJyYXkgb2YgdGhlIGRhdGFcbiAgY29uc3QgcmVjdXJzZSA9IChjdXIsIHByb3ApID0+IHtcbiAgICBsZXQgaTtcbiAgICBpZiAoT2JqZWN0KGN1cikgIT09IGN1cikge1xuICAgICAgcmVzdWx0W3Byb3BdID0gY3VyO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjdXIpKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgY3VyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgICAgIHJlY3Vyc2UoY3VyW2ldLCBgJHtwcm9wfSR7c2VwYXJhdG9yfSR7aX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWN1cnNlKGN1cltpXSwgYCR7cHJvcH1bJHtpfV1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGN1ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0W3Byb3BdID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc0VtcHR5RmxhZyA9IHRydWU7XG4gICAgICBPYmplY3Qua2V5cyhjdXIpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpc0VtcHR5RmxhZyA9IGZhbHNlO1xuICAgICAgICByZWN1cnNlKGN1cltrZXldLCBwcm9wID8gYCR7cHJvcH0ke3NlcGFyYXRvcn0ke2tleX1gIDoga2V5KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGlzRW1wdHlGbGFnICYmIHByb3ApIHJlc3VsdFtwcm9wXSA9IHt9O1xuICAgIH1cbiAgfTtcblxuICByZWN1cnNlKGRhdGEsICcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgYSBnaXZlbiB0aW1lem9uZS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdGltZXpvbmUgdmFsdWUgZm9yIHdoaWNoIHRoZSBvZmZzZXQgbmVlZHMgdG8gYmUgY2FsY3VsYXRlZC5cbiAqIEByZXR1cm5zIFRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgdGhlIGdpdmVuIHRpbWV6b25lLiBJZiB0aGUgdGltZXpvbmUgaXMgaW52YWxpZCBvciBub3QgZm91bmQsIGl0IHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdBc2lhL0NhbGN1dHRhJyk7XG4gKiBjb25zb2xlLmxvZyhvZmZzZXQpOyAvLyBPdXRwdXQ6IDE5ODAwXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRPZmZzZXRJblNlYyA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBtb21lbnQudHouem9uZSh2YWx1ZSk7XG4gIGlmIChuYW1lKSB7XG4gICAgY29uc3QgeCA9IG1vbWVudCgpLnR6KHZhbHVlKS5mb3JtYXQoJ1onKTtcbiAgICBjb25zdCBzcGxpdCA9IHguc3BsaXQoJzonKTtcbiAgICBjb25zdCBob3VyID0gTnVtYmVyKHNwbGl0WzBdKTtcbiAgICBjb25zdCBtaW4gPSBOdW1iZXIoc3BsaXRbMV0pO1xuICAgIGxldCBzZWMgPSAwO1xuICAgIHNlYyA9IGhvdXIgPCAwID8gLTEgKiAoaG91ciAqIC02MCAqIDYwICsgbWluICogNjApIDogaG91ciAqIDYwICogNjAgKyBtaW4gKiA2MDtcbiAgICByZXR1cm4gc2VjO1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW50byBhIGZvcm1hdHRlZCB0aW1lc3RhbXAuXG4gKiBJZiBhIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHVzZXMgdGhlIG1vbWVudCBsaWJyYXJ5IHRvIGZvcm1hdCB0aGUgZGF0ZS5cbiAqIElmIG5vIGZvcm1hdCBzdHJpbmcgaXMgcHJvdmlkZWQsIGl0IHJldHVybnMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgZGF0ZS5cbiAqIEBwYXJhbSBkYXRlU3RyIC0gVGhlIGRhdGUgc3RyaW5nIHRvIGJlIGZvcm1hdHRlZC5cbiAqIEBwYXJhbSBmb3JtYXQgLSAoT3B0aW9uYWwpIFRoZSBmb3JtYXQgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIGZvcm1hdHRpbmcgdGhlIGRhdGUuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgYXMgYSBzdHJpbmcgaWYgYSBmb3JtYXQgc3RyaW5nIGlzIHByb3ZpZGVkLFxuICogICAgICAgICAgb3RoZXJ3aXNlIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGRhdGUgYXMgYSBudW1iZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRUaW1lU3RhbXAgPSAoZGF0ZVN0cjogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGVTdHIpO1xuICAvLyBtb21lbnQgZm9ybWF0IGlzIHBhc3NlZC4gZm9ybWF0IGFjY29yZGluZ2x5XG4gIGlmIChmb3JtYXQpIHtcbiAgICByZXR1cm4gbW9tZW50LnV0YyhkYXRlKS5mb3JtYXQoZm9ybWF0KTtcbiAgfVxuXG4gIC8vIHJldHVybiBkZWZhdWx0IGZvcm1hdFxuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzaFRvU2hhMjU2ID0gKHZhbHVlOiBzdHJpbmcgfCBCdWZmZXIgfCBudW1iZXJbXSkgPT4gc2hhMjU2KHZhbHVlKTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBVbml2ZXJzYWxseSBVbmlxdWUgSWRlbnRpZmllciAoVVVJRCkgdXNpbmcgdGhlIGBjcnlwdG8ucmFuZG9tVVVJRCgpYCBtZXRob2QuXG4gKiBUaGUgYGRpc2FibGVFbnRyb3B5Q2FjaGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgY2FjaGluZyBvZiBnZW5lcmF0ZWQgVVVJRHMuXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gQSByYW5kb21seSBnZW5lcmF0ZWQgVVVJRC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL25vZGVqcy5vcmcvYXBpL2NyeXB0by5odG1sI2NyeXB0b3JhbmRvbXV1aWRvcHRpb25zOn46dGV4dD1vcHRpb25zJTIwJTNDT2JqZWN0JTNFLSxkaXNhYmxlRW50cm9weUNhY2hlLC0lM0Nib29sZWFuJTNFJTIwQnl9XG4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVVVSUQgPSAoKTogc3RyaW5nID0+IGNyeXB0by5yYW5kb21VVUlEKHsgZGlzYWJsZUVudHJvcHlDYWNoZTogdHJ1ZSB9KTtcblxuLy8gUm91dGVyIHRyYW5zZm9ybWVyXG4vLyBFcnJvciByZXNwb25zZXNcbmV4cG9ydCBjb25zdCBnZXRFcnJvclJlc3BFdmVudHMgPSAoXG4gIG1ldGFkYXRhOiBNZXRhZGF0YVtdLFxuICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gIGVycm9yOiBzdHJpbmcsXG4gIHN0YXRUYWdzOiBPYmplY3QsXG4gIGJhdGNoZWQ6IGJvb2xlYW4gPSBmYWxzZSxcbik6IHtcbiAgbWV0YWRhdGE6IE1ldGFkYXRhW107XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgZXJyb3I6IHN0cmluZztcbiAgc3RhdFRhZ3M6IE9iamVjdDtcbiAgYmF0Y2hlZDogYm9vbGVhbjtcbn0gPT4gKHtcbiAgbWV0YWRhdGEsXG4gIGJhdGNoZWQsXG4gIHN0YXR1c0NvZGUsXG4gIGVycm9yLFxuICBzdGF0VGFncyxcbn0pO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvU3RyaW5nID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn07XG5cbmNvbnN0IHV1aWRfbmFtZXNwYWNlID0gJ2U3NmM2ZTUxLTA2ZjktNDIyMi05NjM2LTVhYmE3ZTNhODRiNic7XG5leHBvcnQgY29uc3QgdXVpZHY1ID0gKHZhbDogc3RyaW5nKSA9PiB2NSh2YWwsIHV1aWRfbmFtZXNwYWNlKTtcbiJdfQ==