178 lines
25 KiB
Plaintext
178 lines
25 KiB
Plaintext
import { get, isObjectLike, isString } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29";
|
|
export const defineAuthError = (definition) => {
|
|
return class AuthErrorClass extends Error {
|
|
message;
|
|
code;
|
|
payload;
|
|
isAuthPolicyError = true;
|
|
static code = definition.code;
|
|
constructor(...args) {
|
|
const [params] = args;
|
|
const message = isString(params) ? params : params?.message || definition.message;
|
|
super(message);
|
|
this.code = definition.code;
|
|
this.payload =
|
|
params && !isString(params) && 'payload' in params
|
|
? params.payload
|
|
: undefined;
|
|
this.message = message;
|
|
this.name = definition.code + 'Error';
|
|
}
|
|
};
|
|
};
|
|
export const isAuthPolicyError = (err) => {
|
|
return isObjectLike(err) && get(err, 'isAuthPolicyError') === true;
|
|
};
|
|
export const ProjectNotFoundError = defineAuthError({
|
|
code: 'ProjectNotFound',
|
|
message: 'Project not found'
|
|
});
|
|
export const ProjectNoAccessError = defineAuthError({
|
|
code: 'ProjectNoAccess',
|
|
message: 'You do not have access to the project'
|
|
});
|
|
export const PersonalProjectsLimitedError = defineAuthError({
|
|
code: 'PersonalProjectsLimited',
|
|
message: 'Non-workspaced/personal projects are limited'
|
|
});
|
|
export const ProjectNotEnoughPermissionsError = defineAuthError({
|
|
code: 'ProjectNotEnoughPermissions',
|
|
message: 'You do not have enough permissions in the project to perform this action'
|
|
});
|
|
export const ProjectLastOwnerError = defineAuthError({
|
|
code: 'ProjectLastOwner',
|
|
message: 'You are the last owner of this project'
|
|
});
|
|
export const WorkspacesNotEnabledError = defineAuthError({
|
|
code: 'WorkspacesNotEnabled',
|
|
message: 'This server does not support workspaces'
|
|
});
|
|
export const WorkspaceNoAccessError = defineAuthError({
|
|
code: 'WorkspaceNoAccess',
|
|
message: 'You do not have access to the workspace'
|
|
});
|
|
export const WorkspaceNotEnoughPermissionsError = defineAuthError({
|
|
code: 'WorkspaceNotEnoughPermissions',
|
|
message: 'You do not have enough permissions in the workspace to perform this action'
|
|
});
|
|
export const EligibleForExclusiveWorkspaceError = defineAuthError({
|
|
code: 'UserEligibleForExclusiveWorkspace',
|
|
message: 'Cannot create workspace: ' +
|
|
'You are a member or eligible to become a member of an exclusive workspace. ' +
|
|
'This is due to you having received an invite to the workspace ' +
|
|
'or having a matching verified email.'
|
|
});
|
|
export const WorkspaceReadOnlyError = defineAuthError({
|
|
code: 'WorkspaceReadOnly',
|
|
message: 'The workspace is in a read only mode, upgrade your plan to unlock it'
|
|
});
|
|
export const WorkspaceLimitsReachedError = defineAuthError({
|
|
code: 'WorkspaceLimitsReached',
|
|
message: 'Workspace limits have been reached'
|
|
});
|
|
export const WorkspacePlanNoFeatureAccessError = defineAuthError({
|
|
code: 'WorkspacePlanNoFeatureAccessError',
|
|
message: 'Your workspace plan does not have access to this feature.'
|
|
});
|
|
export const WorkspaceProjectMoveInvalidError = defineAuthError({
|
|
code: 'WorkspaceProjectMoveInvalid',
|
|
message: 'Projects already in a workspace cannot be moved to another workspace.'
|
|
});
|
|
export const WorkspaceSsoSessionNoAccessError = defineAuthError({
|
|
code: 'WorkspaceSsoSessionNoAccess',
|
|
message: 'Your workspace SSO session is expired or it does not exist'
|
|
});
|
|
export const WorkspaceNoEditorSeatError = defineAuthError({
|
|
code: 'WorkspaceNoEditorSeat',
|
|
message: 'You need an editor seat to perform this action'
|
|
});
|
|
export const ServerNoAccessError = defineAuthError({
|
|
code: 'ServerNoAccess',
|
|
message: 'You do not have access to this server'
|
|
});
|
|
export const ServerNotEnoughPermissionsError = defineAuthError({
|
|
code: 'ServerNotEnoughPermissions',
|
|
message: 'You do not have enough permissions in the server to perform this action'
|
|
});
|
|
export const ServerNoSessionError = defineAuthError({
|
|
code: 'ServerNoSession',
|
|
message: 'You are not logged in to this server'
|
|
});
|
|
export const CommentNotFoundError = defineAuthError({
|
|
code: 'CommentNotFound',
|
|
message: 'Comment not found'
|
|
});
|
|
export const CommentNoAccessError = defineAuthError({
|
|
code: 'CommentNoAccess',
|
|
message: 'You do not have access to this comment'
|
|
});
|
|
export const ModelNotFoundError = defineAuthError({
|
|
code: 'ModelNotFound',
|
|
message: 'Model not found'
|
|
});
|
|
export const ReservedModelNotDeletableError = defineAuthError({
|
|
code: 'ReservedModelNotDeletable',
|
|
message: 'This model is reserved and cannot be deleted'
|
|
});
|
|
export const VersionNotFoundError = defineAuthError({
|
|
code: 'VersionNotFound',
|
|
message: 'Version not found'
|
|
});
|
|
export const AutomateNotEnabledError = defineAuthError({
|
|
code: 'AutomateNotEnabled',
|
|
message: 'Automate is not enabled on this server'
|
|
});
|
|
export const AutomateFunctionNotFoundError = defineAuthError({
|
|
code: 'AutomateFunctionNotFound',
|
|
message: 'Function not found'
|
|
});
|
|
export const AutomateFunctionNotCreatorError = defineAuthError({
|
|
code: 'AutomateFunctionNotCreator',
|
|
message: 'You are not the function creator and cannot make changes to it.'
|
|
});
|
|
export const AccIntegrationNotEnabledError = defineAuthError({
|
|
code: 'AccIntegrationNotEnabled',
|
|
message: 'The ACC Integration is not enabled on this server or project'
|
|
});
|
|
export const SavedViewNotFoundError = defineAuthError({
|
|
code: 'SavedViewNotFound',
|
|
message: 'Saved view not found'
|
|
});
|
|
export const SavedViewNoAccessError = defineAuthError({
|
|
code: 'SavedViewNoAccess',
|
|
message: 'You do not have access to this saved view'
|
|
});
|
|
export const SavedViewInvalidUpdateError = defineAuthError({
|
|
code: 'SavedViewInvalidUpdate',
|
|
message: 'The requested update is invalid'
|
|
});
|
|
export const SavedViewGroupNotFoundError = defineAuthError({
|
|
code: 'SavedViewGroupNotFound',
|
|
message: 'Saved view group not found'
|
|
});
|
|
export const UngroupedSavedViewGroupLockError = defineAuthError({
|
|
code: 'UngroupedSavedViewGroupLock',
|
|
message: 'The default/ungrouped group cannot be modified.'
|
|
});
|
|
export const DashboardsNotEnabledError = defineAuthError({
|
|
code: 'DashboardsNotEnabled',
|
|
message: 'Dashboards are not enabled for this server or workspaces.'
|
|
});
|
|
export const DashboardNotFoundError = defineAuthError({
|
|
code: 'DashboardNotFound',
|
|
message: 'Dashboard not found'
|
|
});
|
|
export const DashboardNoProjectsError = defineAuthError({
|
|
code: 'DashboardNoProjects',
|
|
message: 'Dashboard has no projects added to it. You need to add at least one project before sharing.'
|
|
});
|
|
export const DashboardProjectsNotEnoughPermissionsError = defineAuthError({
|
|
code: 'DashboardProjectsNotEnoughPermissions',
|
|
message: 'You do not have sufficient access to some projects in this workspace.'
|
|
});
|
|
export const DashboardNotOwnerError = defineAuthError({
|
|
code: 'DashboardNotOwner',
|
|
message: 'You must be a dashboard owner to perform this action'
|
|
});
|
|
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aEVycm9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdXRoei9kb21haW4vYXV0aEVycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFVckQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBRzdCLFVBR0QsRUFPQyxFQUFFO0lBQ0YsT0FBTyxNQUFNLGNBQWUsU0FBUSxLQUFLO1FBQzlCLE9BQU8sQ0FBUTtRQUNmLElBQUksQ0FBVztRQUNmLE9BQU8sQ0FBUztRQUNoQixpQkFBaUIsR0FBRyxJQUFJLENBQUE7UUFFakMsTUFBTSxDQUFDLElBQUksR0FBYyxVQUFVLENBQUMsSUFBSSxDQUFBO1FBRXhDLFlBQ0UsR0FBRyxJQUUwRDtZQUU3RCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUE7WUFDakYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRWQsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO1lBQzNCLElBQUksQ0FBQyxPQUFPO2dCQUNWLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLElBQUksTUFBTTtvQkFDaEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO29CQUNoQixDQUFDLENBQUUsU0FBcUIsQ0FBQTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtZQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ3ZDLENBQUM7S0FDRixD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O0lBQzVCLE9BQU8sRUFBRSwyREFBMkQ7Q0FDckUsQ0FBQyxDQUFBO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDO0lBQ3BELElBQUksRUFBRSxtQkFBbUI7SUFDekIsT0FBTyxFQUFFLHFCQUFxQjtDQUMvQixDQUFDLENBQUE7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUM7SUFDdEQsSUFBSSxFQUFFLHFCQUFxQjtJQUMzQixPQUFPLEVBQ0wsNkZBQTZGO0NBQ2hHLENBQUMsQ0FBQTtBQUVGLE1BQU0sQ0FBQyxNQUFNLDBDQUEwQyxHQUFHLGVBQWUsQ0FLdkU7SUFDQSxJQUFJLEVBQUUsdUNBQXVDO0lBQzdDLE9BQU8sRUFBRSx1RUFBdUU7Q0FDakYsQ0FBQyxDQUFBO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDO0lBQ3BELElBQUksRUFBRSxtQkFBbUI7SUFDekIsT0FBTyxFQUFFLHNEQUFzRDtDQUNoRSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQsIGlzT2JqZWN0TGlrZSwgaXNTdHJpbmcgfSBmcm9tICcjbG9kYXNoJ1xyXG5pbXBvcnQgeyBWYWx1ZU9mIH0gZnJvbSAndHlwZS1mZXN0J1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2VMaW1pdHMgfSBmcm9tICcuLi8uLi93b3Jrc3BhY2VzL2hlbHBlcnMvbGltaXRzLmpzJ1xyXG5cclxuZXhwb3J0IHR5cGUgQXV0aEVycm9yPEVycm9yQ29kZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgUGF5bG9hZCA9IHVuZGVmaW5lZD4gPSB7XHJcbiAgcmVhZG9ubHkgY29kZTogRXJyb3JDb2RlXHJcbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nXHJcbiAgcmVhZG9ubHkgcGF5bG9hZDogUGF5bG9hZFxyXG59ICYgRXJyb3JcclxuXHJcbmV4cG9ydCBjb25zdCBkZWZpbmVBdXRoRXJyb3IgPSA8XHJcbiAgRXJyb3JDb2RlIGV4dGVuZHMgc3RyaW5nLFxyXG4gIFBheWxvYWQgPSB1bmRlZmluZWRcclxuPihkZWZpbml0aW9uOiB7XHJcbiAgY29kZTogRXJyb3JDb2RlXHJcbiAgbWVzc2FnZTogc3RyaW5nXHJcbn0pOiB7XHJcbiAgbmV3IChcclxuICAgIC4uLmFyZ3M6IFBheWxvYWQgZXh0ZW5kcyB1bmRlZmluZWRcclxuICAgICAgPyBbcGFyYW1zPzogeyBtZXNzYWdlPzogc3RyaW5nIH0gfCBzdHJpbmddXHJcbiAgICAgIDogW3BhcmFtczogeyBwYXlsb2FkOiBQYXlsb2FkOyBtZXNzYWdlPzogc3RyaW5nIH0gfCBzdHJpbmddXHJcbiAgKTogQXV0aEVycm9yPEVycm9yQ29kZSwgUGF5bG9hZD5cclxuICBjb2RlOiBFcnJvckNvZGVcclxufSA9PiB7XHJcbiAgcmV0dXJuIGNsYXNzIEF1dGhFcnJvckNsYXNzIGV4dGVuZHMgRXJyb3Ige1xyXG4gICAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nXHJcbiAgICByZWFkb25seSBjb2RlOiBFcnJvckNvZGVcclxuICAgIHJlYWRvbmx5IHBheWxvYWQ6IFBheWxvYWRcclxuICAgIHJlYWRvbmx5IGlzQXV0aFBvbGljeUVycm9yID0gdHJ1ZVxyXG5cclxuICAgIHN0YXRpYyBjb2RlOiBFcnJvckNvZGUgPSBkZWZpbml0aW9uLmNvZGVcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgLi4uYXJnczogUGF5bG9hZCBleHRlbmRzIHVuZGVmaW5lZFxyXG4gICAgICAgID8gW3BhcmFtcz86IHsgbWVzc2FnZT86IHN0cmluZyB9IHwgc3RyaW5nXVxyXG4gICAgICAgIDogW3BhcmFtczogeyBwYXlsb2FkOiBQYXlsb2FkOyBtZXNzYWdlPzogc3RyaW5nIH0gfCBzdHJpbmddXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgW3BhcmFtc10gPSBhcmdzXHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBpc1N0cmluZyhwYXJhbXMpID8gcGFyYW1zIDogcGFyYW1zPy5tZXNzYWdlIHx8IGRlZmluaXRpb24ubWVzc2FnZVxyXG4gICAgICBzdXBlcihtZXNzYWdlKVxyXG5cclxuICAgICAgdGhpcy5jb2RlID0gZGVmaW5pdGlvbi5jb2RlXHJcbiAgICAgIHRoaXMucGF5bG9hZCA9XHJcbiAgICAgICAgcGFyYW1zICYmICFpc1N0cmluZyhwYXJhbXMpICYmICdwYXlsb2FkJyBpbiBwYXJhbXNcclxuICAgICAgICAgID8gcGFyYW1zLnBheWxvYWRcclxuICAgICAgICAgIDogKHVuZGVmaW5lZCBhcyBQYXlsb2FkKVxyXG4gICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXHJcbiAgICAgIHRoaXMubmFtZSA9IGRlZmluaXRpb24uY29kZSArICdFcnJvcidcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc0F1dGhQb2xpY3lFcnJvciA9IChlcnI6IHVua25vd24pOiBlcnIgaXMgQXV0aEVycm9yID0+IHtcclxuICByZXR1cm4gaXNPYmplY3RMaWtlKGVycikgJiYgZ2V0KGVyciwgJ2lzQXV0aFBvbGljeUVycm9yJykgPT09IHRydWVcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFByb2plY3ROb3RGb3VuZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnUHJvamVjdE5vdEZvdW5kJyxcclxuICBtZXNzYWdlOiAnUHJvamVjdCBub3QgZm91bmQnXHJcbn0pXHJcblxyXG5leHBvcnQgY29uc3QgUHJvamVjdE5vQWNjZXNzRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdQcm9qZWN0Tm9BY2Nlc3MnLFxyXG4gIG1lc3NhZ2U6ICdZb3UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBwcm9qZWN0J1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFBlcnNvbmFsUHJvamVjdHNMaW1pdGVkRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdQZXJzb25hbFByb2plY3RzTGltaXRlZCcsXHJcbiAgbWVzc2FnZTogJ05vbi13b3Jrc3BhY2VkL3BlcnNvbmFsIHByb2plY3RzIGFyZSBsaW1pdGVkJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFByb2plY3ROb3RFbm91Z2hQZXJtaXNzaW9uc0Vycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnUHJvamVjdE5vdEVub3VnaFBlcm1pc3Npb25zJyxcclxuICBtZXNzYWdlOiAnWW91IGRvIG5vdCBoYXZlIGVub3VnaCBwZXJtaXNzaW9ucyBpbiB0aGUgcHJvamVjdCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFByb2plY3RMYXN0T3duZXJFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1Byb2plY3RMYXN0T3duZXInLFxyXG4gIG1lc3NhZ2U6ICdZb3UgYXJlIHRoZSBsYXN0IG93bmVyIG9mIHRoaXMgcHJvamVjdCdcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBXb3Jrc3BhY2VzTm90RW5hYmxlZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnV29ya3NwYWNlc05vdEVuYWJsZWQnLFxyXG4gIG1lc3NhZ2U6ICdUaGlzIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHdvcmtzcGFjZXMnXHJcbn0pXHJcblxyXG5leHBvcnQgY29uc3QgV29ya3NwYWNlTm9BY2Nlc3NFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1dvcmtzcGFjZU5vQWNjZXNzJyxcclxuICBtZXNzYWdlOiAnWW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgd29ya3NwYWNlJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZU5vdEVub3VnaFBlcm1pc3Npb25zRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdXb3Jrc3BhY2VOb3RFbm91Z2hQZXJtaXNzaW9ucycsXHJcbiAgbWVzc2FnZTogJ1lvdSBkbyBub3QgaGF2ZSBlbm91Z2ggcGVybWlzc2lvbnMgaW4gdGhlIHdvcmtzcGFjZSB0byBwZXJmb3JtIHRoaXMgYWN0aW9uJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IEVsaWdpYmxlRm9yRXhjbHVzaXZlV29ya3NwYWNlRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdVc2VyRWxpZ2libGVGb3JFeGNsdXNpdmVXb3Jrc3BhY2UnLFxyXG4gIG1lc3NhZ2U6XHJcbiAgICAnQ2Fubm90IGNyZWF0ZSB3b3Jrc3BhY2U6ICcgK1xyXG4gICAgJ1lvdSBhcmUgYSBtZW1iZXIgb3IgZWxpZ2libGUgdG8gYmVjb21lIGEgbWVtYmVyIG9mIGFuIGV4Y2x1c2l2ZSB3b3Jrc3BhY2UuICcgK1xyXG4gICAgJ1RoaXMgaXMgZHVlIHRvIHlvdSBoYXZpbmcgcmVjZWl2ZWQgYW4gaW52aXRlIHRvIHRoZSB3b3Jrc3BhY2UgJyArXHJcbiAgICAnb3IgaGF2aW5nIGEgbWF0Y2hpbmcgdmVyaWZpZWQgZW1haWwuJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZVJlYWRPbmx5RXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdXb3Jrc3BhY2VSZWFkT25seScsXHJcbiAgbWVzc2FnZTogJ1RoZSB3b3Jrc3BhY2UgaXMgaW4gYSByZWFkIG9ubHkgbW9kZSwgdXBncmFkZSB5b3VyIHBsYW4gdG8gdW5sb2NrIGl0J1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZUxpbWl0c1JlYWNoZWRFcnJvciA9IGRlZmluZUF1dGhFcnJvcjxcclxuICAnV29ya3NwYWNlTGltaXRzUmVhY2hlZCcsXHJcbiAgeyBsaW1pdDoga2V5b2YgV29ya3NwYWNlTGltaXRzIH1cclxuPih7XHJcbiAgY29kZTogJ1dvcmtzcGFjZUxpbWl0c1JlYWNoZWQnLFxyXG4gIG1lc3NhZ2U6ICdXb3Jrc3BhY2UgbGltaXRzIGhhdmUgYmVlbiByZWFjaGVkJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZVBsYW5Ob0ZlYXR1cmVBY2Nlc3NFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1dvcmtzcGFjZVBsYW5Ob0ZlYXR1cmVBY2Nlc3NFcnJvcicsXHJcbiAgbWVzc2FnZTogJ1lvdXIgd29ya3NwYWNlIHBsYW4gZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBmZWF0dXJlLidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBXb3Jrc3BhY2VQcm9qZWN0TW92ZUludmFsaWRFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1dvcmtzcGFjZVByb2plY3RNb3ZlSW52YWxpZCcsXHJcbiAgbWVzc2FnZTogJ1Byb2plY3RzIGFscmVhZHkgaW4gYSB3b3Jrc3BhY2UgY2Fubm90IGJlIG1vdmVkIHRvIGFub3RoZXIgd29ya3NwYWNlLidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBXb3Jrc3BhY2VTc29TZXNzaW9uTm9BY2Nlc3NFcnJvciA9IGRlZmluZUF1dGhFcnJvcjxcclxuICAnV29ya3NwYWNlU3NvU2Vzc2lvbk5vQWNjZXNzJyxcclxuICB7XHJcbiAgICB3b3Jrc3BhY2VTbHVnOiBzdHJpbmdcclxuICB9XHJcbj4oe1xyXG4gIGNvZGU6ICdXb3Jrc3BhY2VTc29TZXNzaW9uTm9BY2Nlc3MnLFxyXG4gIG1lc3NhZ2U6ICdZb3VyIHdvcmtzcGFjZSBTU08gc2Vzc2lvbiBpcyBleHBpcmVkIG9yIGl0IGRvZXMgbm90IGV4aXN0J1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFdvcmtzcGFjZU5vRWRpdG9yU2VhdEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnV29ya3NwYWNlTm9FZGl0b3JTZWF0JyxcclxuICBtZXNzYWdlOiAnWW91IG5lZWQgYW4gZWRpdG9yIHNlYXQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBTZXJ2ZXJOb0FjY2Vzc0Vycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnU2VydmVyTm9BY2Nlc3MnLFxyXG4gIG1lc3NhZ2U6ICdZb3UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoaXMgc2VydmVyJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNlcnZlck5vdEVub3VnaFBlcm1pc3Npb25zRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdTZXJ2ZXJOb3RFbm91Z2hQZXJtaXNzaW9ucycsXHJcbiAgbWVzc2FnZTogJ1lvdSBkbyBub3QgaGF2ZSBlbm91Z2ggcGVybWlzc2lvbnMgaW4gdGhlIHNlcnZlciB0byBwZXJmb3JtIHRoaXMgYWN0aW9uJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNlcnZlck5vU2Vzc2lvbkVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnU2VydmVyTm9TZXNzaW9uJyxcclxuICBtZXNzYWdlOiAnWW91IGFyZSBub3QgbG9nZ2VkIGluIHRvIHRoaXMgc2VydmVyJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IENvbW1lbnROb3RGb3VuZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnQ29tbWVudE5vdEZvdW5kJyxcclxuICBtZXNzYWdlOiAnQ29tbWVudCBub3QgZm91bmQnXHJcbn0pXHJcblxyXG5leHBvcnQgY29uc3QgQ29tbWVudE5vQWNjZXNzRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdDb21tZW50Tm9BY2Nlc3MnLFxyXG4gIG1lc3NhZ2U6ICdZb3UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoaXMgY29tbWVudCdcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBNb2RlbE5vdEZvdW5kRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdNb2RlbE5vdEZvdW5kJyxcclxuICBtZXNzYWdlOiAnTW9kZWwgbm90IGZvdW5kJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFJlc2VydmVkTW9kZWxOb3REZWxldGFibGVFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1Jlc2VydmVkTW9kZWxOb3REZWxldGFibGUnLFxyXG4gIG1lc3NhZ2U6ICdUaGlzIG1vZGVsIGlzIHJlc2VydmVkIGFuZCBjYW5ub3QgYmUgZGVsZXRlZCdcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBWZXJzaW9uTm90Rm91bmRFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1ZlcnNpb25Ob3RGb3VuZCcsXHJcbiAgbWVzc2FnZTogJ1ZlcnNpb24gbm90IGZvdW5kJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IEF1dG9tYXRlTm90RW5hYmxlZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnQXV0b21hdGVOb3RFbmFibGVkJyxcclxuICBtZXNzYWdlOiAnQXV0b21hdGUgaXMgbm90IGVuYWJsZWQgb24gdGhpcyBzZXJ2ZXInXHJcbn0pXHJcblxyXG5leHBvcnQgY29uc3QgQXV0b21hdGVGdW5jdGlvbk5vdEZvdW5kRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdBdXRvbWF0ZUZ1bmN0aW9uTm90Rm91bmQnLFxyXG4gIG1lc3NhZ2U6ICdGdW5jdGlvbiBub3QgZm91bmQnXHJcbn0pXHJcblxyXG5leHBvcnQgY29uc3QgQXV0b21hdGVGdW5jdGlvbk5vdENyZWF0b3JFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ0F1dG9tYXRlRnVuY3Rpb25Ob3RDcmVhdG9yJyxcclxuICBtZXNzYWdlOiAnWW91IGFyZSBub3QgdGhlIGZ1bmN0aW9uIGNyZWF0b3IgYW5kIGNhbm5vdCBtYWtlIGNoYW5nZXMgdG8gaXQuJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IEFjY0ludGVncmF0aW9uTm90RW5hYmxlZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnQWNjSW50ZWdyYXRpb25Ob3RFbmFibGVkJyxcclxuICBtZXNzYWdlOiAnVGhlIEFDQyBJbnRlZ3JhdGlvbiBpcyBub3QgZW5hYmxlZCBvbiB0aGlzIHNlcnZlciBvciBwcm9qZWN0J1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNhdmVkVmlld05vdEZvdW5kRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdTYXZlZFZpZXdOb3RGb3VuZCcsXHJcbiAgbWVzc2FnZTogJ1NhdmVkIHZpZXcgbm90IGZvdW5kJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNhdmVkVmlld05vQWNjZXNzRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdTYXZlZFZpZXdOb0FjY2VzcycsXHJcbiAgbWVzc2FnZTogJ1lvdSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBzYXZlZCB2aWV3J1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNhdmVkVmlld0ludmFsaWRVcGRhdGVFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1NhdmVkVmlld0ludmFsaWRVcGRhdGUnLFxyXG4gIG1lc3NhZ2U6ICdUaGUgcmVxdWVzdGVkIHVwZGF0ZSBpcyBpbnZhbGlkJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IFNhdmVkVmlld0dyb3VwTm90Rm91bmRFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1NhdmVkVmlld0dyb3VwTm90Rm91bmQnLFxyXG4gIG1lc3NhZ2U6ICdTYXZlZCB2aWV3IGdyb3VwIG5vdCBmb3VuZCdcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBVbmdyb3VwZWRTYXZlZFZpZXdHcm91cExvY2tFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ1VuZ3JvdXBlZFNhdmVkVmlld0dyb3VwTG9jaycsXHJcbiAgbWVzc2FnZTogJ1RoZSBkZWZhdWx0L3VuZ3JvdXBlZCBncm91cCBjYW5ub3QgYmUgbW9kaWZpZWQuJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IERhc2hib2FyZHNOb3RFbmFibGVkRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3Ioe1xyXG4gIGNvZGU6ICdEYXNoYm9hcmRzTm90RW5hYmxlZCcsXHJcbiAgbWVzc2FnZTogJ0Rhc2hib2FyZHMgYXJlIG5vdCBlbmFibGVkIGZvciB0aGlzIHNlcnZlciBvciB3b3Jrc3BhY2VzLidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBEYXNoYm9hcmROb3RGb3VuZEVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnRGFzaGJvYXJkTm90Rm91bmQnLFxyXG4gIG1lc3NhZ2U6ICdEYXNoYm9hcmQgbm90IGZvdW5kJ1xyXG59KVxyXG5cclxuZXhwb3J0IGNvbnN0IERhc2hib2FyZE5vUHJvamVjdHNFcnJvciA9IGRlZmluZUF1dGhFcnJvcih7XHJcbiAgY29kZTogJ0Rhc2hib2FyZE5vUHJvamVjdHMnLFxyXG4gIG1lc3NhZ2U6XHJcbiAgICAnRGFzaGJvYXJkIGhhcyBubyBwcm9qZWN0cyBhZGRlZCB0byBpdC4gWW91IG5lZWQgdG8gYWRkIGF0IGxlYXN0IG9uZSBwcm9qZWN0IGJlZm9yZSBzaGFyaW5nLidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBEYXNoYm9hcmRQcm9qZWN0c05vdEVub3VnaFBlcm1pc3Npb25zRXJyb3IgPSBkZWZpbmVBdXRoRXJyb3I8XHJcbiAgJ0Rhc2hib2FyZFByb2plY3RzTm90RW5vdWdoUGVybWlzc2lvbnMnLFxyXG4gIHtcclxuICAgIHByb2plY3RJZHM6IHN0cmluZ1tdXHJcbiAgfVxyXG4+KHtcclxuICBjb2RlOiAnRGFzaGJvYXJkUHJvamVjdHNOb3RFbm91Z2hQZXJtaXNzaW9ucycsXHJcbiAgbWVzc2FnZTogJ1lvdSBkbyBub3QgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byBzb21lIHByb2plY3RzIGluIHRoaXMgd29ya3NwYWNlLidcclxufSlcclxuXHJcbmV4cG9ydCBjb25zdCBEYXNoYm9hcmROb3RPd25lckVycm9yID0gZGVmaW5lQXV0aEVycm9yKHtcclxuICBjb2RlOiAnRGFzaGJvYXJkTm90T3duZXInLFxyXG4gIG1lc3NhZ2U6ICdZb3UgbXVzdCBiZSBhIGRhc2hib2FyZCBvd25lciB0byBwZXJmb3JtIHRoaXMgYWN0aW9uJ1xyXG59KVxyXG5cclxuLy8gUmVzb2x2ZSBhbGwgZXhwb3J0ZWQgZXJyb3IgdHlwZXNcclxuZXhwb3J0IHR5cGUgQWxsQXV0aEVycm9ycyA9IFZhbHVlT2Y8e1xyXG4gIFtrZXkgaW4ga2V5b2YgdHlwZW9mIGltcG9ydCgnLi9hdXRoRXJyb3JzLmpzJyldOiB0eXBlb2YgaW1wb3J0KCcuL2F1dGhFcnJvcnMuanMnKVtrZXldIGV4dGVuZHMgbmV3IChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAuLi5hcmdzOiBhbnlbXVxyXG4gICkgPT4gaW5mZXIgUlxyXG4gICAgPyBSXHJcbiAgICA6IG5ldmVyXHJcbn0+XHJcbiJdfQ== |