@appconda/nextjs 1.0.207 → 1.0.209

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,5 @@
1
+ import { z } from "zod";
2
+ import { UpdateJobSchema } from "./schema";
3
+ export declare const UpdateJob: (params: z.infer<typeof UpdateJobSchema>) => Promise<import("./types").ScheduledJob | {
4
+ serverError: any;
5
+ }>;
@@ -0,0 +1,17 @@
1
+ 'use server';
2
+ import { UpdateJobSchema } from "./schema";
3
+ import { getSDKForCurrentUser } from "../../getSDKForCurrentUser";
4
+ export const UpdateJob = async (params) => {
5
+ try {
6
+ const parsedInput = UpdateJobSchema.parse(params);
7
+ const { scheduledJob } = await getSDKForCurrentUser();
8
+ return await scheduledJob.UpdateJob(parsedInput);
9
+ }
10
+ catch (error) {
11
+ console.error('Error in UpdateJob:', error);
12
+ return {
13
+ serverError: error.toString()
14
+ };
15
+ }
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uMi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL3NjaGVkdWxlZC1qb2IvYWN0aW9uMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQyxZQUFZLENBQUM7QUFJZCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2pFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsTUFBdUMsRUFBRSxFQUFFO0lBQ3BFLElBQUksQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztRQUN0RCxPQUFPLE1BQU0sWUFBWSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVyRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsT0FBTztZQUNILFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1NBQ2hDLENBQUE7SUFDTCxDQUFDO0FBQ0wsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiICd1c2Ugc2VydmVyJztcblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgVXBkYXRlSm9iU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBnZXRTREtGb3JDdXJyZW50VXNlciB9IGZyb20gXCIuLi8uLi9nZXRTREtGb3JDdXJyZW50VXNlclwiO1xuXG5cbiBleHBvcnQgY29uc3QgVXBkYXRlSm9iID0gYXN5bmMgKHBhcmFtczogei5pbmZlcjx0eXBlb2YgVXBkYXRlSm9iU2NoZW1hPikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkSW5wdXQgPSBVcGRhdGVKb2JTY2hlbWEucGFyc2UocGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IHsgc2NoZWR1bGVkSm9iIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHNjaGVkdWxlZEpvYi5VcGRhdGVKb2IocGFyc2VkSW5wdXQpO1xuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBVcGRhdGVKb2I6JywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJFcnJvcjogZXJyb3IudG9TdHJpbmcoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { CreateListSchema, CreateProjectSchema, CreateSprintSchema, CreateTaskListSchema, CreateTaskSchema, CreateViewSchema, DeleteSprintSchema, DeleteTaskListSchema, GetProjectSchema, GetSprintSchema, GetTaskListSchema, ListProjectsSchema, ListTaskListsSchema, ListTasksInListSchema, ListTasksSchema, ListViewsSchema, MoveTaskSchema, UpdateSprintSchema, UpdateTaskListSchema } from './schema';
2
+ import { ChangePostCategorySchema, ChangePostStatusSchema, CreateBoardSchema, CreateChangelogSchema, CreateCommentSchema, CreateListSchema, CreatePostCategorySchema, CreatePostSchema, CreateProjectSchema, CreateRoadmapSchema, CreateSprintSchema, CreateStatusChangeSchema, CreateTagSchema, CreateTaskListSchema, CreateTaskSchema, CreateViewSchema, CreateVoteSchema, DeleteBoardSchema, DeleteCommentSchema, DeletePostCategorySchema, DeleteSprintSchema, DeleteTaskListSchema, DeleteVoteSchema, GetBoardSchema, GetChangeLogSchema, GetCommentSchema, GetPostCategorySchema, GetPostSchema, GetProjectSchema, GetRoadmapSchema, GetSprintSchema, GetTagSchema, GetTaskListSchema, GetVoteSchema, ListBoardsSchema, ListChangeLogsSchema, ListCommentsSchema, ListPostCategoriesSchema, ListPostsSchema, ListProjectsSchema, ListTagsSchema, ListTaskListsSchema, ListTasksInListSchema, ListTasksSchema, ListViewsSchema, ListVotesSchema, MoveTaskSchema, UpdateSprintSchema, UpdateTaskListSchema } from './schema';
3
3
  export declare const CreateProject: (parsedInput: z.infer<typeof CreateProjectSchema>) => Promise<import("./types").Project>;
4
4
  export declare const GetProject: (parsedInput: z.infer<typeof GetProjectSchema>) => Promise<import("./types").Project>;
5
5
  export declare const ListProjects: (parsedInput: z.infer<typeof ListProjectsSchema>) => Promise<import("./types").Project[]>;
@@ -20,3 +20,35 @@ export declare const MoveTask: (parsedInput: z.infer<typeof MoveTaskSchema>) =>
20
20
  export declare const CreateView: (parsedInput: z.infer<typeof CreateViewSchema>) => Promise<import("./types").View>;
21
21
  export declare const ListViews: (parsedInput: z.infer<typeof ListViewsSchema>) => Promise<import("./types").View[]>;
22
22
  export declare const ListTasks: (parsedInput: z.infer<typeof ListTasksSchema>) => Promise<import("./types").Task[]>;
23
+ export declare const ChangePostCategory: (parsedInput: z.infer<typeof ChangePostCategorySchema>) => Promise<void>;
24
+ export declare const ChangePostStatus: (parsedInput: z.infer<typeof ChangePostStatusSchema>) => Promise<void>;
25
+ export declare const CreateBoard: (parsedInput: z.infer<typeof CreateBoardSchema>) => Promise<import("./types").Board>;
26
+ export declare const GetBoard: (parsedInput: z.infer<typeof GetBoardSchema>) => Promise<import("./types").Board>;
27
+ export declare const ListBoards: (parsedInput: z.infer<typeof ListBoardsSchema>) => Promise<import("./types").Board[]>;
28
+ export declare const DeleteBoard: (parsedInput: z.infer<typeof DeleteBoardSchema>) => Promise<void>;
29
+ export declare const CreateChangelog: (parsedInput: z.infer<typeof CreateChangelogSchema>) => Promise<import("./types").Changelog>;
30
+ export declare const CreateComment: (parsedInput: z.infer<typeof CreateCommentSchema>) => Promise<Comment>;
31
+ export declare const CreatePost: (parsedInput: z.infer<typeof CreatePostSchema>) => Promise<import("./types").Post>;
32
+ export declare const CreatePostCategory: (parsedInput: z.infer<typeof CreatePostCategorySchema>) => Promise<import("./types").PostCategory>;
33
+ export declare const CreateRoadmap: (parsedInput: z.infer<typeof CreateRoadmapSchema>) => Promise<import("./types").Roadmap>;
34
+ export declare const CreateStatusChange: (parsedInput: z.infer<typeof CreateStatusChangeSchema>) => Promise<void>;
35
+ export declare const CreateTag: (parsedInput: z.infer<typeof CreateTagSchema>) => Promise<import("./types").Tag>;
36
+ export declare const CreateVote: (parsedInput: z.infer<typeof CreateVoteSchema>) => Promise<import("./types").Vote>;
37
+ export declare const DeleteComment: (parsedInput: z.infer<typeof DeleteCommentSchema>) => Promise<void>;
38
+ export declare const DeletePostCategory: (parsedInput: z.infer<typeof DeletePostCategorySchema>) => Promise<void>;
39
+ export declare const DeleteVote: (parsedInput: z.infer<typeof DeleteVoteSchema>) => Promise<void>;
40
+ export declare const GetChangeLog: (parsedInput: z.infer<typeof GetChangeLogSchema>) => Promise<import("./types").Changelog>;
41
+ export declare const GetComment: (parsedInput: z.infer<typeof GetCommentSchema>) => Promise<Comment>;
42
+ export declare const GetPost: (parsedInput: z.infer<typeof GetPostSchema>) => Promise<import("./types").Post>;
43
+ export declare const GetPostCategory: (parsedInput: z.infer<typeof GetPostCategorySchema>) => Promise<import("./types").PostCategory>;
44
+ export declare const GetRoadmap: (parsedInput: z.infer<typeof GetRoadmapSchema>) => Promise<import("./types").Roadmap>;
45
+ export declare const GetTag: (parsedInput: z.infer<typeof GetTagSchema>) => Promise<import("./types").Tag>;
46
+ export declare const GetVote: (parsedInput: z.infer<typeof GetVoteSchema>) => Promise<import("./types").Vote>;
47
+ export declare const ListChangeLogs: (parsedInput: z.infer<typeof ListChangeLogsSchema>) => Promise<import("./types").Changelog[]>;
48
+ export declare const ListComments: (parsedInput: z.infer<typeof ListCommentsSchema>) => Promise<Comment[]>;
49
+ export declare const ListPostCategories: (parsedInput: z.infer<typeof ListPostCategoriesSchema>) => Promise<import("./types").PostCategory[]>;
50
+ export declare const ListPosts: (parsedInput: z.infer<typeof ListPostsSchema>) => Promise<import("./types").Post[]>;
51
+ export declare const ListRoadmaps: () => Promise<import("./types").Roadmap[]>;
52
+ export declare const ListStatusChanges: () => Promise<import("./types").StatusChange[]>;
53
+ export declare const ListTags: (parsedInput: z.infer<typeof ListTagsSchema>) => Promise<import("./types").Tag[]>;
54
+ export declare const ListVotes: (parsedInput: z.infer<typeof ListVotesSchema>) => Promise<import("./types").Vote[]>;
@@ -250,4 +250,389 @@ export const ListTasks = async (parsedInput) => {
250
250
  throw error;
251
251
  }
252
252
  };
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvdGFzay9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2xFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO0lBQ3BGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsWUFBWTtRQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQztZQUMxQixFQUFFLEVBQUUsR0FBRztZQUNQLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtTQUN4QixDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLFdBQTZDLEVBQUUsRUFBRTtJQUM5RSxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO1FBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxD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QUssRUFBRSxXQUE0QyxFQUFFLEVBQUU7SUFDNUUsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sb0JBQW9CLEVBQUUsQ0FBQztRQUM5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcic7XG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgQXBwY29uZGFFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0U0RLRm9yQ3VycmVudFVzZXIgfSBmcm9tICcuLi8uLi9nZXRTREtGb3JDdXJyZW50VXNlcic7XG5pbXBvcnQgeyBDcmVhdGVMaXN0U2NoZW1hLCBDcmVhdGVQcm9qZWN0U2NoZW1hLCBDcmVhdGVTcHJpbnRTY2hlbWEsIENyZWF0ZVRhc2tMaXN0U2NoZW1hLCBDcmVhdGVUYXNrU2NoZW1hLCBDcmVhdGVWaWV3U2NoZW1hLCBEZWxldGVTcHJpbnRTY2hlbWEsIERlbGV0ZVRhc2tMaXN0U2NoZW1hLCBHZXRQcm9qZWN0U2NoZW1hLCBHZXRTcHJpbnRTY2hlbWEsIEdldFRhc2tMaXN0U2NoZW1hLCBMaXN0UHJvamVjdHNTY2hlbWEsIExpc3RUYXNrTGlzdHNTY2hlbWEsIExpc3RUYXNrc0luTGlzdFNjaGVtYSwgTGlzdFRhc2tzU2NoZW1hLCBMaXN0Vmlld3NTY2hlbWEsIE1vdmVUYXNrU2NoZW1hLCBVcGRhdGVTcHJpbnRTY2hlbWEsIFVwZGF0ZVRhc2tMaXN0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlUHJvamVjdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlUHJvamVjdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgdGFzay5DcmVhdGVQcm9qZWN0KHBhcnNlZElucHV0KTtcbiAgICAgICAgY29uc3QgdmlldyA9IGF3YWl0IENyZWF0ZVZpZXcoe1xuICAgICAgICAgICAgaWQ6ICcwJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQmFja2xvZycsXG4gICAgICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3QuaWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm9qZWN0O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0UHJvamVjdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0UHJvamVjdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkdldFByb2plY3QocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFByb2plY3RzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0UHJvamVjdHNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suTGlzdFByb2plY3RzKHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlVGFza0xpc3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tMaXN0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5DcmVhdGVUYXNrTGlzdChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldFRhc2tMaXN0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRUYXNrTGlzdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkdldFRhc2tMaXN0KHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5cbmV4cG9ydCBjb25zdCBMaXN0VGFza0xpc3RzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGFza0xpc3RzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0VGFza0xpc3RzKHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgVXBkYXRlVGFza0xpc3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRhc2tMaXN0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5VcGRhdGVUYXNrTGlzdChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZVRhc2tMaXN0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVUYXNrTGlzdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suRGVsZXRlVGFza0xpc3QocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVTcHJpbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNwcmludFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suQ3JlYXRlU3ByaW50KHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0U3ByaW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRTcHJpbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkdldFNwcmludChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuLy9AdHMtaWdub3JlXG5leHBvcnQgY29uc3QgTGlzdFNwcmludHMgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RTcHJpbnRzKCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVNwcmludCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgVXBkYXRlU3ByaW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5VcGRhdGVTcHJpbnQocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVTcHJpbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNwcmludFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suRGVsZXRlU3ByaW50KHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlTGlzdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlTGlzdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suQ3JlYXRlTGlzdChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgTGlzdFRhc2tzSW5MaXN0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGFza3NJbkxpc3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RUYXNrc0luTGlzdChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVRhc2sgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVRhc2socGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNb3ZlVGFzayA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTW92ZVRhc2tTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLk1vdmVUYXNrKHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGluIE1vdmVUYXNrIDogJHtlcnJvci50b1N0cmluZygpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVZpZXcgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVZpZXdTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVZpZXcocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0Vmlld3MgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RWaWV3c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RWaWV3cyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0VGFza3MgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RUYXNrc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RUYXNrcyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbiJdfQ==
253
+ // Feedback modülü action fonksiyonları
254
+ export const ChangePostCategory = async (parsedInput) => {
255
+ try {
256
+ const { task } = await getSDKForCurrentUser();
257
+ return await task.ChangePostCategory(parsedInput);
258
+ }
259
+ catch (error) {
260
+ if (error instanceof AppcondaException) {
261
+ throw new Error(error.message);
262
+ }
263
+ throw error;
264
+ }
265
+ };
266
+ export const ChangePostStatus = async (parsedInput) => {
267
+ try {
268
+ const { task } = await getSDKForCurrentUser();
269
+ return await task.ChangePostStatus(parsedInput);
270
+ }
271
+ catch (error) {
272
+ if (error instanceof AppcondaException) {
273
+ throw new Error(error.message);
274
+ }
275
+ throw error;
276
+ }
277
+ };
278
+ export const CreateBoard = async (parsedInput) => {
279
+ try {
280
+ const { task } = await getSDKForCurrentUser();
281
+ return await task.CreateBoard(parsedInput);
282
+ }
283
+ catch (error) {
284
+ if (error instanceof AppcondaException) {
285
+ throw new Error(error.message);
286
+ }
287
+ throw error;
288
+ }
289
+ };
290
+ export const GetBoard = async (parsedInput) => {
291
+ try {
292
+ const { task } = await getSDKForCurrentUser();
293
+ return await task.GetBoard(parsedInput);
294
+ }
295
+ catch (error) {
296
+ if (error instanceof AppcondaException) {
297
+ throw new Error(error.message);
298
+ }
299
+ throw error;
300
+ }
301
+ };
302
+ export const ListBoards = async (parsedInput) => {
303
+ try {
304
+ const { task } = await getSDKForCurrentUser();
305
+ return await task.ListBoards(parsedInput);
306
+ }
307
+ catch (error) {
308
+ if (error instanceof AppcondaException) {
309
+ throw new Error(error.message);
310
+ }
311
+ throw error;
312
+ }
313
+ };
314
+ export const DeleteBoard = async (parsedInput) => {
315
+ try {
316
+ const { task } = await getSDKForCurrentUser();
317
+ return await task.DeleteBoard(parsedInput);
318
+ }
319
+ catch (error) {
320
+ if (error instanceof AppcondaException) {
321
+ throw new Error(error.message);
322
+ }
323
+ throw error;
324
+ }
325
+ };
326
+ export const CreateChangelog = async (parsedInput) => {
327
+ try {
328
+ const { task } = await getSDKForCurrentUser();
329
+ return await task.CreateChangelog(parsedInput);
330
+ }
331
+ catch (error) {
332
+ if (error instanceof AppcondaException) {
333
+ throw new Error(error.message);
334
+ }
335
+ throw error;
336
+ }
337
+ };
338
+ export const CreateComment = async (parsedInput) => {
339
+ try {
340
+ const { task } = await getSDKForCurrentUser();
341
+ return await task.CreateComment(parsedInput);
342
+ }
343
+ catch (error) {
344
+ if (error instanceof AppcondaException) {
345
+ throw new Error(error.message);
346
+ }
347
+ throw error;
348
+ }
349
+ };
350
+ export const CreatePost = async (parsedInput) => {
351
+ try {
352
+ const { task } = await getSDKForCurrentUser();
353
+ return await task.CreatePost(parsedInput);
354
+ }
355
+ catch (error) {
356
+ if (error instanceof AppcondaException) {
357
+ throw new Error(error.message);
358
+ }
359
+ throw error;
360
+ }
361
+ };
362
+ export const CreatePostCategory = async (parsedInput) => {
363
+ try {
364
+ const { task } = await getSDKForCurrentUser();
365
+ return await task.CreatePostCategory(parsedInput);
366
+ }
367
+ catch (error) {
368
+ if (error instanceof AppcondaException) {
369
+ throw new Error(error.message);
370
+ }
371
+ throw error;
372
+ }
373
+ };
374
+ export const CreateRoadmap = async (parsedInput) => {
375
+ try {
376
+ const { task } = await getSDKForCurrentUser();
377
+ return await task.CreateRoadmap(parsedInput);
378
+ }
379
+ catch (error) {
380
+ if (error instanceof AppcondaException) {
381
+ throw new Error(error.message);
382
+ }
383
+ throw error;
384
+ }
385
+ };
386
+ export const CreateStatusChange = async (parsedInput) => {
387
+ try {
388
+ const { task } = await getSDKForCurrentUser();
389
+ return await task.CreateStatusChange(parsedInput);
390
+ }
391
+ catch (error) {
392
+ if (error instanceof AppcondaException) {
393
+ throw new Error(error.message);
394
+ }
395
+ throw error;
396
+ }
397
+ };
398
+ export const CreateTag = async (parsedInput) => {
399
+ try {
400
+ const { task } = await getSDKForCurrentUser();
401
+ return await task.CreateTag(parsedInput);
402
+ }
403
+ catch (error) {
404
+ if (error instanceof AppcondaException) {
405
+ throw new Error(error.message);
406
+ }
407
+ throw error;
408
+ }
409
+ };
410
+ export const CreateVote = async (parsedInput) => {
411
+ try {
412
+ const { task } = await getSDKForCurrentUser();
413
+ return await task.CreateVote(parsedInput);
414
+ }
415
+ catch (error) {
416
+ if (error instanceof AppcondaException) {
417
+ throw new Error(error.message);
418
+ }
419
+ throw error;
420
+ }
421
+ };
422
+ export const DeleteComment = async (parsedInput) => {
423
+ try {
424
+ const { task } = await getSDKForCurrentUser();
425
+ return await task.DeleteComment(parsedInput);
426
+ }
427
+ catch (error) {
428
+ if (error instanceof AppcondaException) {
429
+ throw new Error(error.message);
430
+ }
431
+ throw error;
432
+ }
433
+ };
434
+ export const DeletePostCategory = async (parsedInput) => {
435
+ try {
436
+ const { task } = await getSDKForCurrentUser();
437
+ return await task.DeletePostCategory(parsedInput);
438
+ }
439
+ catch (error) {
440
+ if (error instanceof AppcondaException) {
441
+ throw new Error(error.message);
442
+ }
443
+ throw error;
444
+ }
445
+ };
446
+ export const DeleteVote = async (parsedInput) => {
447
+ try {
448
+ const { task } = await getSDKForCurrentUser();
449
+ return await task.DeleteVote(parsedInput);
450
+ }
451
+ catch (error) {
452
+ if (error instanceof AppcondaException) {
453
+ throw new Error(error.message);
454
+ }
455
+ throw error;
456
+ }
457
+ };
458
+ export const GetChangeLog = async (parsedInput) => {
459
+ try {
460
+ const { task } = await getSDKForCurrentUser();
461
+ return await task.GetChangeLog(parsedInput);
462
+ }
463
+ catch (error) {
464
+ if (error instanceof AppcondaException) {
465
+ throw new Error(error.message);
466
+ }
467
+ throw error;
468
+ }
469
+ };
470
+ export const GetComment = async (parsedInput) => {
471
+ try {
472
+ const { task } = await getSDKForCurrentUser();
473
+ return await task.GetComment(parsedInput);
474
+ }
475
+ catch (error) {
476
+ if (error instanceof AppcondaException) {
477
+ throw new Error(error.message);
478
+ }
479
+ throw error;
480
+ }
481
+ };
482
+ export const GetPost = async (parsedInput) => {
483
+ try {
484
+ const { task } = await getSDKForCurrentUser();
485
+ return await task.GetPost(parsedInput);
486
+ }
487
+ catch (error) {
488
+ if (error instanceof AppcondaException) {
489
+ throw new Error(error.message);
490
+ }
491
+ throw error;
492
+ }
493
+ };
494
+ export const GetPostCategory = async (parsedInput) => {
495
+ try {
496
+ const { task } = await getSDKForCurrentUser();
497
+ return await task.GetPostCategory(parsedInput);
498
+ }
499
+ catch (error) {
500
+ if (error instanceof AppcondaException) {
501
+ throw new Error(error.message);
502
+ }
503
+ throw error;
504
+ }
505
+ };
506
+ export const GetRoadmap = async (parsedInput) => {
507
+ try {
508
+ const { task } = await getSDKForCurrentUser();
509
+ return await task.GetRoadmap(parsedInput);
510
+ }
511
+ catch (error) {
512
+ if (error instanceof AppcondaException) {
513
+ throw new Error(error.message);
514
+ }
515
+ throw error;
516
+ }
517
+ };
518
+ export const GetTag = async (parsedInput) => {
519
+ try {
520
+ const { task } = await getSDKForCurrentUser();
521
+ return await task.GetTag(parsedInput);
522
+ }
523
+ catch (error) {
524
+ if (error instanceof AppcondaException) {
525
+ throw new Error(error.message);
526
+ }
527
+ throw error;
528
+ }
529
+ };
530
+ export const GetVote = async (parsedInput) => {
531
+ try {
532
+ const { task } = await getSDKForCurrentUser();
533
+ return await task.GetVote(parsedInput);
534
+ }
535
+ catch (error) {
536
+ if (error instanceof AppcondaException) {
537
+ throw new Error(error.message);
538
+ }
539
+ throw error;
540
+ }
541
+ };
542
+ export const ListChangeLogs = async (parsedInput) => {
543
+ try {
544
+ const { task } = await getSDKForCurrentUser();
545
+ return await task.ListChangeLogs(parsedInput);
546
+ }
547
+ catch (error) {
548
+ if (error instanceof AppcondaException) {
549
+ throw new Error(error.message);
550
+ }
551
+ throw error;
552
+ }
553
+ };
554
+ export const ListComments = async (parsedInput) => {
555
+ try {
556
+ const { task } = await getSDKForCurrentUser();
557
+ return await task.ListComments(parsedInput);
558
+ }
559
+ catch (error) {
560
+ if (error instanceof AppcondaException) {
561
+ throw new Error(error.message);
562
+ }
563
+ throw error;
564
+ }
565
+ };
566
+ export const ListPostCategories = async (parsedInput) => {
567
+ try {
568
+ const { task } = await getSDKForCurrentUser();
569
+ return await task.ListPostCategories(parsedInput);
570
+ }
571
+ catch (error) {
572
+ if (error instanceof AppcondaException) {
573
+ throw new Error(error.message);
574
+ }
575
+ throw error;
576
+ }
577
+ };
578
+ export const ListPosts = async (parsedInput) => {
579
+ try {
580
+ const { task } = await getSDKForCurrentUser();
581
+ return await task.ListPosts(parsedInput);
582
+ }
583
+ catch (error) {
584
+ if (error instanceof AppcondaException) {
585
+ throw new Error(error.message);
586
+ }
587
+ throw error;
588
+ }
589
+ };
590
+ export const ListRoadmaps = async () => {
591
+ try {
592
+ const { task } = await getSDKForCurrentUser();
593
+ return await task.ListRoadmaps();
594
+ }
595
+ catch (error) {
596
+ if (error instanceof AppcondaException) {
597
+ throw new Error(error.message);
598
+ }
599
+ throw error;
600
+ }
601
+ };
602
+ export const ListStatusChanges = async () => {
603
+ try {
604
+ const { task } = await getSDKForCurrentUser();
605
+ return await task.ListStatusChanges();
606
+ }
607
+ catch (error) {
608
+ if (error instanceof AppcondaException) {
609
+ throw new Error(error.message);
610
+ }
611
+ throw error;
612
+ }
613
+ };
614
+ export const ListTags = async (parsedInput) => {
615
+ try {
616
+ const { task } = await getSDKForCurrentUser();
617
+ return await task.ListTags(parsedInput);
618
+ }
619
+ catch (error) {
620
+ if (error instanceof AppcondaException) {
621
+ throw new Error(error.message);
622
+ }
623
+ throw error;
624
+ }
625
+ };
626
+ export const ListVotes = async (parsedInput) => {
627
+ try {
628
+ const { task } = await getSDKForCurrentUser();
629
+ return await task.ListVotes(parsedInput);
630
+ }
631
+ catch (error) {
632
+ if (error instanceof AppcondaException) {
633
+ throw new Error(error.message);
634
+ }
635
+ throw error;
636
+ }
637
+ };
638
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZHVsZXMvdGFzay9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDO0FBR2IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR2xFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsV0FBZ0QsRUFBRSxFQUFFO0lBQ3BGLElBQUksQ0FBQztRQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsWUFBWTtRQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQztZQUMxQixFQUFFLEVBQUUsR0FBRztZQUNQLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtTQUN4QixDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLFdBQTZDLEVBQUUsRUFBRTtJQUM5RSxJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxvQkFBb0IsRUFBRSxDQUFDO1FBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxD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QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHNlcnZlcic7XG5cbmltcG9ydCB7IHogfSBmcm9tICd6b2QnO1xuaW1wb3J0IHsgQXBwY29uZGFFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9jbGllbnQnO1xuaW1wb3J0IHsgZ2V0U0RLRm9yQ3VycmVudFVzZXIgfSBmcm9tICcuLi8uLi9nZXRTREtGb3JDdXJyZW50VXNlcic7XG5pbXBvcnQgeyBDaGFuZ2VQb3N0Q2F0ZWdvcnlTY2hlbWEsIENoYW5nZVBvc3RTdGF0dXNTY2hlbWEsIENyZWF0ZUJvYXJkU2NoZW1hLCBDcmVhdGVDaGFuZ2Vsb2dTY2hlbWEsIENyZWF0ZUNvbW1lbnRTY2hlbWEsIENyZWF0ZUxpc3RTY2hlbWEsIENyZWF0ZVBvc3RDYXRlZ29yeVNjaGVtYSwgQ3JlYXRlUG9zdFNjaGVtYSwgQ3JlYXRlUHJvamVjdFNjaGVtYSwgQ3JlYXRlUm9hZG1hcFNjaGVtYSwgQ3JlYXRlU3ByaW50U2NoZW1hLCBDcmVhdGVTdGF0dXNDaGFuZ2VTY2hlbWEsIENyZWF0ZVRhZ1NjaGVtYSwgQ3JlYXRlVGFza0xpc3RTY2hlbWEsIENyZWF0ZVRhc2tTY2hlbWEsIENyZWF0ZVZpZXdTY2hlbWEsIENyZWF0ZVZvdGVTY2hlbWEsIERlbGV0ZUJvYXJkU2NoZW1hLCBEZWxldGVDb21tZW50U2NoZW1hLCBEZWxldGVQb3N0Q2F0ZWdvcnlTY2hlbWEsIERlbGV0ZVNwcmludFNjaGVtYSwgRGVsZXRlVGFza0xpc3RTY2hlbWEsIERlbGV0ZVZvdGVTY2hlbWEsIEdldEJvYXJkU2NoZW1hLCBHZXRDaGFuZ2VMb2dTY2hlbWEsIEdldENvbW1lbnRTY2hlbWEsIEdldFBvc3RDYXRlZ29yeVNjaGVtYSwgR2V0UG9zdFNjaGVtYSwgR2V0UHJvamVjdFNjaGVtYSwgR2V0Um9hZG1hcFNjaGVtYSwgR2V0U3ByaW50U2NoZW1hLCBHZXRUYWdTY2hlbWEsIEdldFRhc2tMaXN0U2NoZW1hLCBHZXRWb3RlU2NoZW1hLCBMaXN0Qm9hcmRzU2NoZW1hLCBMaXN0Q2hhbmdlTG9nc1NjaGVtYSwgTGlzdENvbW1lbnRzU2NoZW1hLCBMaXN0UG9zdENhdGVnb3JpZXNTY2hlbWEsIExpc3RQb3N0c1NjaGVtYSwgTGlzdFByb2plY3RzU2NoZW1hLCBMaXN0VGFnc1NjaGVtYSwgTGlzdFRhc2tMaXN0c1NjaGVtYSwgTGlzdFRhc2tzSW5MaXN0U2NoZW1hLCBMaXN0VGFza3NTY2hlbWEsIExpc3RWaWV3c1NjaGVtYSwgTGlzdFZvdGVzU2NoZW1hLCBNb3ZlVGFza1NjaGVtYSwgVXBkYXRlU3ByaW50U2NoZW1hLCBVcGRhdGVUYXNrTGlzdFNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVByb2plY3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVByb2plY3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHRhc2suQ3JlYXRlUHJvamVjdChwYXJzZWRJbnB1dCk7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBhd2FpdCBDcmVhdGVWaWV3KHtcbiAgICAgICAgICAgIGlkOiAnMCcsXG4gICAgICAgICAgICB0aXRsZTogJ0JhY2tsb2cnLFxuICAgICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0LmlkXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvamVjdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldFByb2plY3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFByb2plY3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRQcm9qZWN0KHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RQcm9qZWN0cyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdFByb2plY3RzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RQcm9qZWN0cyhwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVRhc2tMaXN0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUYXNrTGlzdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suQ3JlYXRlVGFza0xpc3QocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRUYXNrTGlzdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0VGFza0xpc3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRUYXNrTGlzdChwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cblxuXG5leHBvcnQgY29uc3QgTGlzdFRhc2tMaXN0cyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tMaXN0c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suTGlzdFRhc2tMaXN0cyhwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZVRhc2tMaXN0ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUYXNrTGlzdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suVXBkYXRlVGFza0xpc3QocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVUYXNrTGlzdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVGFza0xpc3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkRlbGV0ZVRhc2tMaXN0KHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlU3ByaW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTcHJpbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVNwcmludChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldFNwcmludCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0U3ByaW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRTcHJpbnQocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbi8vQHRzLWlnbm9yZVxuZXhwb3J0IGNvbnN0IExpc3RTcHJpbnRzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0U3ByaW50cygpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVTcHJpbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNwcmludFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuXG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suVXBkYXRlU3ByaW50KHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlU3ByaW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVTcHJpbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkRlbGV0ZVNwcmludChwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUxpc3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUxpc3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZUxpc3QocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cblxuZXhwb3J0IGNvbnN0IExpc3RUYXNrc0luTGlzdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tzSW5MaXN0U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0VGFza3NJbkxpc3QocGFyc2VkSW5wdXQpO1xuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVUYXNrID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUYXNrU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5DcmVhdGVUYXNrKHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTW92ZVRhc2sgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIE1vdmVUYXNrU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5Nb3ZlVGFzayhwYXJzZWRJbnB1dCk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBpbiBNb3ZlVGFzayA6ICR7ZXJyb3IudG9TdHJpbmcoKX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVWaWV3ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVWaWV3U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG5cbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5DcmVhdGVWaWV3KHBhcnNlZElucHV0KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFZpZXdzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0Vmlld3NTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0Vmlld3MocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFRhc2tzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGFza3NTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0VGFza3MocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG4vLyBGZWVkYmFjayBtb2TDvGzDvCBhY3Rpb24gZm9ua3NpeW9ubGFyxLFcbmV4cG9ydCBjb25zdCBDaGFuZ2VQb3N0Q2F0ZWdvcnkgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENoYW5nZVBvc3RDYXRlZ29yeVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNoYW5nZVBvc3RDYXRlZ29yeShwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ2hhbmdlUG9zdFN0YXR1cyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ2hhbmdlUG9zdFN0YXR1c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNoYW5nZVBvc3RTdGF0dXMocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUJvYXJkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBDcmVhdGVCb2FyZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZUJvYXJkKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRCb2FyZCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Qm9hcmRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRCb2FyZChwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdEJvYXJkcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdEJvYXJkc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RCb2FyZHMocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUJvYXJkID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBEZWxldGVCb2FyZFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkRlbGV0ZUJvYXJkKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVDaGFuZ2Vsb2cgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNoYW5nZWxvZ1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZUNoYW5nZWxvZyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ29tbWVudCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tbWVudFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZUNvbW1lbnQocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVBvc3QgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVBvc3RTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5DcmVhdGVQb3N0KHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVQb3N0Q2F0ZWdvcnkgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVBvc3RDYXRlZ29yeVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVBvc3RDYXRlZ29yeShwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlUm9hZG1hcCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlUm9hZG1hcFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVJvYWRtYXAocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVN0YXR1c0NoYW5nZSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU3RhdHVzQ2hhbmdlU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suQ3JlYXRlU3RhdHVzQ2hhbmdlKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVUYWcgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhZ1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVRhZyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlVm90ZSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVm90ZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkNyZWF0ZVZvdGUocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbW1lbnQgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbW1lbnRTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5EZWxldGVDb21tZW50KHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVQb3N0Q2F0ZWdvcnkgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVBvc3RDYXRlZ29yeVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkRlbGV0ZVBvc3RDYXRlZ29yeShwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgRGVsZXRlVm90ZSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVm90ZVNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkRlbGV0ZVZvdGUocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldENoYW5nZUxvZyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhbmdlTG9nU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suR2V0Q2hhbmdlTG9nKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRDb21tZW50ID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRDb21tZW50U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suR2V0Q29tbWVudChwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0UG9zdCA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0UG9zdFNjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkdldFBvc3QocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldFBvc3RDYXRlZ29yeSA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgR2V0UG9zdENhdGVnb3J5U2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suR2V0UG9zdENhdGVnb3J5KHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBHZXRSb2FkbWFwID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRSb2FkbWFwU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suR2V0Um9hZG1hcChwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgR2V0VGFnID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBHZXRUYWdTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRUYWcocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEdldFZvdGUgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIEdldFZvdGVTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5HZXRWb3RlKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0Q2hhbmdlTG9ncyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdENoYW5nZUxvZ3NTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0Q2hhbmdlTG9ncyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdENvbW1lbnRzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tbWVudHNTY2hlbWE+KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0Q29tbWVudHMocGFyc2VkSW5wdXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RQb3N0Q2F0ZWdvcmllcyA9IGFzeW5jIChwYXJzZWRJbnB1dDogei5pbmZlcjx0eXBlb2YgTGlzdFBvc3RDYXRlZ29yaWVzU2NoZW1hPikgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suTGlzdFBvc3RDYXRlZ29yaWVzKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0UG9zdHMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RQb3N0c1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RQb3N0cyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFJvYWRtYXBzID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdGFzayB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRhc2suTGlzdFJvYWRtYXBzKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgTGlzdFN0YXR1c0NoYW5nZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyB0YXNrIH0gPSBhd2FpdCBnZXRTREtGb3JDdXJyZW50VXNlcigpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGFzay5MaXN0U3RhdHVzQ2hhbmdlcygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcGNvbmRhRXhjZXB0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IExpc3RUYWdzID0gYXN5bmMgKHBhcnNlZElucHV0OiB6LmluZmVyPHR5cGVvZiBMaXN0VGFnc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RUYWdzKHBhcnNlZElucHV0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBMaXN0Vm90ZXMgPSBhc3luYyAocGFyc2VkSW5wdXQ6IHouaW5mZXI8dHlwZW9mIExpc3RWb3Rlc1NjaGVtYT4pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHRhc2sgfSA9IGF3YWl0IGdldFNES0ZvckN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0YXNrLkxpc3RWb3RlcyhwYXJzZWRJbnB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBwY29uZGFFeGNlcHRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59O1xuIl19