UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

201 lines (200 loc) • 33.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _joi = /*#__PURE__*/ _interop_require_default(require("joi")); const _schema = require("../../config/schema"); const _componentSchema = require("../../config/shared/componentSchema"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const strategyBaseSchema = _joi.default.object().keys({ logout: _joi.default.boolean(), refresh: _joi.default.boolean() }); const collectionSchema = _joi.default.object().keys({ access: _joi.default.object({ admin: _joi.default.func(), create: _joi.default.func(), delete: _joi.default.func(), read: _joi.default.func(), readVersions: _joi.default.func(), unlock: _joi.default.func(), update: _joi.default.func() }), admin: _joi.default.object({ components: _joi.default.object({ AfterList: _joi.default.array().items(_componentSchema.componentSchema), AfterListTable: _joi.default.array().items(_componentSchema.componentSchema), BeforeList: _joi.default.array().items(_componentSchema.componentSchema), BeforeListTable: _joi.default.array().items(_componentSchema.componentSchema), edit: _joi.default.object({ PreviewButton: _componentSchema.componentSchema, PublishButton: _componentSchema.componentSchema, SaveButton: _componentSchema.componentSchema, SaveDraftButton: _componentSchema.componentSchema }), views: _joi.default.object({ Edit: _joi.default.alternatives().try(_componentSchema.componentSchema, _joi.default.object({ API: _joi.default.alternatives().try(_componentSchema.componentSchema, _componentSchema.customViewSchema), Default: _joi.default.alternatives().try(_componentSchema.componentSchema, _componentSchema.customViewSchema), LivePreview: _joi.default.alternatives().try(_componentSchema.componentSchema, _componentSchema.customViewSchema), Version: _joi.default.alternatives().try(_componentSchema.componentSchema, _componentSchema.customViewSchema), Versions: _joi.default.alternatives().try(_componentSchema.componentSchema, _componentSchema.customViewSchema) })), List: _joi.default.alternatives().try(_componentSchema.componentSchema, _joi.default.object({ Component: _componentSchema.componentSchema, actions: _joi.default.array().items(_componentSchema.componentSchema) })) }) }), defaultColumns: _joi.default.array().items(_joi.default.string()), description: _joi.default.alternatives().try(_joi.default.string(), _componentSchema.componentSchema), disableDuplicate: _joi.default.bool(), enableRichTextLink: _joi.default.boolean(), enableRichTextRelationship: _joi.default.boolean(), group: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [ _joi.default.string() ])), hidden: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.func()), hideAPIURL: _joi.default.bool(), hooks: _joi.default.object({ beforeDuplicate: _joi.default.func() }), listSearchableFields: _joi.default.array().items(_joi.default.string()), livePreview: _joi.default.object(_componentSchema.livePreviewSchema), pagination: _joi.default.object({ defaultLimit: _joi.default.number(), limits: _joi.default.array().items(_joi.default.number()) }), preview: _joi.default.func(), useAsTitle: _joi.default.string() }), auth: _joi.default.alternatives().try(_joi.default.object({ cookies: _joi.default.object().keys({ domain: _joi.default.string(), sameSite: _joi.default.string(), secure: _joi.default.boolean() }), depth: _joi.default.number(), disableLocalStrategy: _joi.default.boolean().valid(true), forgotPassword: _joi.default.object().keys({ generateEmailHTML: _joi.default.func(), generateEmailSubject: _joi.default.func() }), lockTime: _joi.default.number(), maxLoginAttempts: _joi.default.number(), removeTokenFromResponses: _joi.default.boolean().valid(true), strategies: _joi.default.array().items(_joi.default.alternatives().try(strategyBaseSchema.keys({ name: _joi.default.string().required(), strategy: _joi.default.func().maxArity(1).required() }), strategyBaseSchema.keys({ name: _joi.default.string(), strategy: _joi.default.object().required() }))), tokenExpiration: _joi.default.number(), useAPIKey: _joi.default.boolean(), verify: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.object().keys({ generateEmailHTML: _joi.default.func(), generateEmailSubject: _joi.default.func() })) }), _joi.default.boolean()), custom: _joi.default.object().pattern(_joi.default.string(), _joi.default.any()), defaultSort: _joi.default.string(), endpoints: _schema.endpointsSchema, fields: _joi.default.array(), graphQL: _joi.default.alternatives().try(_joi.default.object().keys({ pluralName: _joi.default.string(), singularName: _joi.default.string() }), _joi.default.boolean()), hooks: _joi.default.object({ afterChange: _joi.default.array().items(_joi.default.func()), afterDelete: _joi.default.array().items(_joi.default.func()), afterForgotPassword: _joi.default.array().items(_joi.default.func()), afterLogin: _joi.default.array().items(_joi.default.func()), afterLogout: _joi.default.array().items(_joi.default.func()), afterMe: _joi.default.array().items(_joi.default.func()), afterOperation: _joi.default.array().items(_joi.default.func()), afterRead: _joi.default.array().items(_joi.default.func()), afterRefresh: _joi.default.array().items(_joi.default.func()), beforeChange: _joi.default.array().items(_joi.default.func()), beforeDelete: _joi.default.array().items(_joi.default.func()), beforeLogin: _joi.default.array().items(_joi.default.func()), beforeOperation: _joi.default.array().items(_joi.default.func()), beforeRead: _joi.default.array().items(_joi.default.func()), beforeValidate: _joi.default.array().items(_joi.default.func()) }), indexes: _joi.default.array().items(_joi.default.object().keys({ fields: _joi.default.object().required(), options: _joi.default.object() })), labels: _joi.default.object({ plural: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [ _joi.default.string() ])), singular: _joi.default.alternatives().try(_joi.default.string(), _joi.default.object().pattern(_joi.default.string(), [ _joi.default.string() ])) }), slug: _joi.default.string().required(), timestamps: _joi.default.boolean(), typescript: _joi.default.object().keys({ interface: _joi.default.string() }), upload: _joi.default.alternatives().try(_joi.default.object({ adminThumbnail: _joi.default.alternatives().try(_joi.default.string(), _joi.default.func()), crop: _joi.default.bool(), disableLocalStorage: _joi.default.bool(), filesRequiredOnCreate: _joi.default.bool(), focalPoint: _joi.default.bool(), formatOptions: _joi.default.object().keys({ format: _joi.default.string(), options: _joi.default.object() }), handlers: _joi.default.array().items(_joi.default.func()), imageSizes: _joi.default.array().items(_joi.default.object().keys({ name: _joi.default.string(), crop: _joi.default.string(), height: _joi.default.number().integer().allow(null), width: _joi.default.number().integer().allow(null) }).unknown()), mimeTypes: _joi.default.array().items(_joi.default.string()), resizeOptions: _joi.default.object().keys({ background: _joi.default.string(), fastShrinkOnLoad: _joi.default.bool(), fit: _joi.default.string(), height: _joi.default.number().allow(null), kernel: _joi.default.string(), position: _joi.default.alternatives().try(_joi.default.string(), _joi.default.number()), width: _joi.default.number().allow(null), withoutEnlargement: _joi.default.bool() }).allow(null), staticDir: _joi.default.string(), staticOptions: _joi.default.object(), staticURL: _joi.default.string(), tempFileDir: _joi.default.string(), trimOptions: _joi.default.alternatives().try(_joi.default.object().keys({ format: _joi.default.string(), options: _joi.default.object() }), _joi.default.string(), _joi.default.number()), useTempFiles: _joi.default.bool() }), _joi.default.boolean()), versions: _joi.default.alternatives().try(_joi.default.object({ drafts: _joi.default.alternatives().try(_joi.default.object({ autosave: _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.object({ interval: _joi.default.number() })) }), _joi.default.boolean()), maxPerDoc: _joi.default.number() }), _joi.default.boolean()) }); const _default = collectionSchema; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9jb25maWcvc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBqb2kgZnJvbSAnam9pJ1xuXG5pbXBvcnQgeyBlbmRwb2ludHNTY2hlbWEgfSBmcm9tICcuLi8uLi9jb25maWcvc2NoZW1hJ1xuaW1wb3J0IHtcbiAgY29tcG9uZW50U2NoZW1hLFxuICBjdXN0b21WaWV3U2NoZW1hLFxuICBsaXZlUHJldmlld1NjaGVtYSxcbn0gZnJvbSAnLi4vLi4vY29uZmlnL3NoYXJlZC9jb21wb25lbnRTY2hlbWEnXG5cbmNvbnN0IHN0cmF0ZWd5QmFzZVNjaGVtYSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgbG9nb3V0OiBqb2kuYm9vbGVhbigpLFxuICByZWZyZXNoOiBqb2kuYm9vbGVhbigpLFxufSlcblxuY29uc3QgY29sbGVjdGlvblNjaGVtYSA9IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgYWNjZXNzOiBqb2kub2JqZWN0KHtcbiAgICBhZG1pbjogam9pLmZ1bmMoKSxcbiAgICBjcmVhdGU6IGpvaS5mdW5jKCksXG4gICAgZGVsZXRlOiBqb2kuZnVuYygpLFxuICAgIHJlYWQ6IGpvaS5mdW5jKCksXG4gICAgcmVhZFZlcnNpb25zOiBqb2kuZnVuYygpLFxuICAgIHVubG9jazogam9pLmZ1bmMoKSxcbiAgICB1cGRhdGU6IGpvaS5mdW5jKCksXG4gIH0pLFxuICBhZG1pbjogam9pLm9iamVjdCh7XG4gICAgY29tcG9uZW50czogam9pLm9iamVjdCh7XG4gICAgICBBZnRlckxpc3Q6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBBZnRlckxpc3RUYWJsZTogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgIEJlZm9yZUxpc3Q6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBCZWZvcmVMaXN0VGFibGU6IGpvaS5hcnJheSgpLml0ZW1zKGNvbXBvbmVudFNjaGVtYSksXG4gICAgICBlZGl0OiBqb2kub2JqZWN0KHtcbiAgICAgICAgUHJldmlld0J1dHRvbjogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICBQdWJsaXNoQnV0dG9uOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgIFNhdmVCdXR0b246IGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgU2F2ZURyYWZ0QnV0dG9uOiBjb21wb25lbnRTY2hlbWEsXG4gICAgICB9KSxcbiAgICAgIHZpZXdzOiBqb2kub2JqZWN0KHtcbiAgICAgICAgRWRpdDogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgICBjb21wb25lbnRTY2hlbWEsXG4gICAgICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgICAgICBBUEk6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoY29tcG9uZW50U2NoZW1hLCBjdXN0b21WaWV3U2NoZW1hKSxcbiAgICAgICAgICAgIERlZmF1bHQ6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoY29tcG9uZW50U2NoZW1hLCBjdXN0b21WaWV3U2NoZW1hKSxcbiAgICAgICAgICAgIExpdmVQcmV2aWV3OiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGNvbXBvbmVudFNjaGVtYSwgY3VzdG9tVmlld1NjaGVtYSksXG4gICAgICAgICAgICBWZXJzaW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGNvbXBvbmVudFNjaGVtYSwgY3VzdG9tVmlld1NjaGVtYSksXG4gICAgICAgICAgICBWZXJzaW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShjb21wb25lbnRTY2hlbWEsIGN1c3RvbVZpZXdTY2hlbWEpLFxuICAgICAgICAgICAgLy8gUmVsYXRpb25zaGlwc1xuICAgICAgICAgICAgLy8gUmVmZXJlbmNlc1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgICBMaXN0OiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgICAgICAgIGNvbXBvbmVudFNjaGVtYSxcbiAgICAgICAgICBqb2kub2JqZWN0KHtcbiAgICAgICAgICAgIENvbXBvbmVudDogY29tcG9uZW50U2NoZW1hLFxuICAgICAgICAgICAgYWN0aW9uczogam9pLmFycmF5KCkuaXRlbXMoY29tcG9uZW50U2NoZW1hKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIGRlZmF1bHRDb2x1bW5zOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuc3RyaW5nKCkpLFxuICAgIGRlc2NyaXB0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgY29tcG9uZW50U2NoZW1hKSxcbiAgICBkaXNhYmxlRHVwbGljYXRlOiBqb2kuYm9vbCgpLFxuICAgIGVuYWJsZVJpY2hUZXh0TGluazogam9pLmJvb2xlYW4oKSxcbiAgICBlbmFibGVSaWNoVGV4dFJlbGF0aW9uc2hpcDogam9pLmJvb2xlYW4oKSxcbiAgICBncm91cDogam9pLmFsdGVybmF0aXZlcygpLnRyeShqb2kuc3RyaW5nKCksIGpvaS5vYmplY3QoKS5wYXR0ZXJuKGpvaS5zdHJpbmcoKSwgW2pvaS5zdHJpbmcoKV0pKSxcbiAgICBoaWRkZW46IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoam9pLmJvb2xlYW4oKSwgam9pLmZ1bmMoKSksXG4gICAgaGlkZUFQSVVSTDogam9pLmJvb2woKSxcbiAgICBob29rczogam9pLm9iamVjdCh7XG4gICAgICBiZWZvcmVEdXBsaWNhdGU6IGpvaS5mdW5jKCksXG4gICAgfSksXG4gICAgbGlzdFNlYXJjaGFibGVGaWVsZHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5zdHJpbmcoKSksXG4gICAgbGl2ZVByZXZpZXc6IGpvaS5vYmplY3QobGl2ZVByZXZpZXdTY2hlbWEpLFxuICAgIHBhZ2luYXRpb246IGpvaS5vYmplY3Qoe1xuICAgICAgZGVmYXVsdExpbWl0OiBqb2kubnVtYmVyKCksXG4gICAgICBsaW1pdHM6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5udW1iZXIoKSksXG4gICAgfSksXG4gICAgcHJldmlldzogam9pLmZ1bmMoKSxcbiAgICB1c2VBc1RpdGxlOiBqb2kuc3RyaW5nKCksXG4gIH0pLFxuICBhdXRoOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgIGpvaS5vYmplY3Qoe1xuICAgICAgY29va2llczogam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICBkb21haW46IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgc2FtZVNpdGU6IGpvaS5zdHJpbmcoKSwgLy8gVE9ETzogYWRkIGZ1cnRoZXIgc3BlY2lmaWNpdHkgd2l0aCBqb2kueG9yXG4gICAgICAgIHNlY3VyZTogam9pLmJvb2xlYW4oKSxcbiAgICAgIH0pLFxuICAgICAgZGVwdGg6IGpvaS5udW1iZXIoKSxcbiAgICAgIGRpc2FibGVMb2NhbFN0cmF0ZWd5OiBqb2kuYm9vbGVhbigpLnZhbGlkKHRydWUpLFxuICAgICAgZm9yZ290UGFzc3dvcmQ6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgICAgZ2VuZXJhdGVFbWFpbEhUTUw6IGpvaS5mdW5jKCksXG4gICAgICAgIGdlbmVyYXRlRW1haWxTdWJqZWN0OiBqb2kuZnVuYygpLFxuICAgICAgfSksXG4gICAgICBsb2NrVGltZTogam9pLm51bWJlcigpLFxuICAgICAgbWF4TG9naW5BdHRlbXB0czogam9pLm51bWJlcigpLFxuICAgICAgcmVtb3ZlVG9rZW5Gcm9tUmVzcG9uc2VzOiBqb2kuYm9vbGVhbigpLnZhbGlkKHRydWUpLFxuICAgICAgc3RyYXRlZ2llczogam9pLmFycmF5KCkuaXRlbXMoXG4gICAgICAgIGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoXG4gICAgICAgICAgc3RyYXRlZ3lCYXNlU2NoZW1hLmtleXMoe1xuICAgICAgICAgICAgbmFtZTogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgICAgICBzdHJhdGVneTogam9pLmZ1bmMoKS5tYXhBcml0eSgxKS5yZXF1aXJlZCgpLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0cmF0ZWd5QmFzZVNjaGVtYS5rZXlzKHtcbiAgICAgICAgICAgIG5hbWU6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgICAgIHN0cmF0ZWd5OiBqb2kub2JqZWN0KCkucmVxdWlyZWQoKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICB0b2tlbkV4cGlyYXRpb246IGpvaS5udW1iZXIoKSxcbiAgICAgIHVzZUFQSUtleTogam9pLmJvb2xlYW4oKSxcbiAgICAgIHZlcmlmeTogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLmJvb2xlYW4oKSxcbiAgICAgICAgam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICAgIGdlbmVyYXRlRW1haWxIVE1MOiBqb2kuZnVuYygpLFxuICAgICAgICAgIGdlbmVyYXRlRW1haWxTdWJqZWN0OiBqb2kuZnVuYygpLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgfSksXG4gICAgam9pLmJvb2xlYW4oKSxcbiAgKSxcbiAgY3VzdG9tOiBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIGpvaS5hbnkoKSksXG4gIGRlZmF1bHRTb3J0OiBqb2kuc3RyaW5nKCksXG4gIGVuZHBvaW50czogZW5kcG9pbnRzU2NoZW1hLFxuICBmaWVsZHM6IGpvaS5hcnJheSgpLFxuICBncmFwaFFMOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KFxuICAgIGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICAgIHBsdXJhbE5hbWU6IGpvaS5zdHJpbmcoKSxcbiAgICAgIHNpbmd1bGFyTmFtZTogam9pLnN0cmluZygpLFxuICAgIH0pLFxuICAgIGpvaS5ib29sZWFuKCksXG4gICksXG4gIGhvb2tzOiBqb2kub2JqZWN0KHtcbiAgICBhZnRlckNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gICAgYWZ0ZXJEZWxldGU6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgIGFmdGVyRm9yZ290UGFzc3dvcmQ6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgIGFmdGVyTG9naW46IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgIGFmdGVyTG9nb3V0OiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBhZnRlck1lOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBhZnRlck9wZXJhdGlvbjogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gICAgYWZ0ZXJSZWFkOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBhZnRlclJlZnJlc2g6IGpvaS5hcnJheSgpLml0ZW1zKGpvaS5mdW5jKCkpLFxuICAgIGJlZm9yZUNoYW5nZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gICAgYmVmb3JlRGVsZXRlOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBiZWZvcmVMb2dpbjogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gICAgYmVmb3JlT3BlcmF0aW9uOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBiZWZvcmVSZWFkOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICBiZWZvcmVWYWxpZGF0ZTogam9pLmFycmF5KCkuaXRlbXMoam9pLmZ1bmMoKSksXG4gIH0pLFxuICBpbmRleGVzOiBqb2kuYXJyYXkoKS5pdGVtcyhcbiAgICBqb2kub2JqZWN0KCkua2V5cyh7XG4gICAgICBmaWVsZHM6IGpvaS5vYmplY3QoKS5yZXF1aXJlZCgpLFxuICAgICAgb3B0aW9uczogam9pLm9iamVjdCgpLFxuICAgIH0pLFxuICApLFxuICBsYWJlbHM6IGpvaS5vYmplY3Qoe1xuICAgIHBsdXJhbDogam9pXG4gICAgICAuYWx0ZXJuYXRpdmVzKClcbiAgICAgIC50cnkoam9pLnN0cmluZygpLCBqb2kub2JqZWN0KCkucGF0dGVybihqb2kuc3RyaW5nKCksIFtqb2kuc3RyaW5nKCldKSksXG4gICAgc2luZ3VsYXI6IGpvaVxuICAgICAgLmFsdGVybmF0aXZlcygpXG4gICAgICAudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm9iamVjdCgpLnBhdHRlcm4oam9pLnN0cmluZygpLCBbam9pLnN0cmluZygpXSkpLFxuICB9KSxcbiAgc2x1Zzogam9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gIHRpbWVzdGFtcHM6IGpvaS5ib29sZWFuKCksXG4gIHR5cGVzY3JpcHQ6IGpvaS5vYmplY3QoKS5rZXlzKHtcbiAgICBpbnRlcmZhY2U6IGpvaS5zdHJpbmcoKSxcbiAgfSksXG4gIHVwbG9hZDogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICBqb2kub2JqZWN0KHtcbiAgICAgIGFkbWluVGh1bWJuYWlsOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLmZ1bmMoKSksXG4gICAgICBjcm9wOiBqb2kuYm9vbCgpLFxuICAgICAgZGlzYWJsZUxvY2FsU3RvcmFnZTogam9pLmJvb2woKSxcbiAgICAgIGZpbGVzUmVxdWlyZWRPbkNyZWF0ZTogam9pLmJvb2woKSxcbiAgICAgIGZvY2FsUG9pbnQ6IGpvaS5ib29sKCksXG4gICAgICBmb3JtYXRPcHRpb25zOiBqb2kub2JqZWN0KCkua2V5cyh7XG4gICAgICAgIGZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgICBvcHRpb25zOiBqb2kub2JqZWN0KCksXG4gICAgICB9KSxcbiAgICAgIGhhbmRsZXJzOiBqb2kuYXJyYXkoKS5pdGVtcyhqb2kuZnVuYygpKSxcbiAgICAgIGltYWdlU2l6ZXM6IGpvaS5hcnJheSgpLml0ZW1zKFxuICAgICAgICBqb2lcbiAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAua2V5cyh7XG4gICAgICAgICAgICBuYW1lOiBqb2kuc3RyaW5nKCksXG4gICAgICAgICAgICBjcm9wOiBqb2kuc3RyaW5nKCksIC8vIFRPRE86IGFkZCBmdXJ0aGVyIHNwZWNpZmljaXR5IHdpdGggam9pLnhvclxuICAgICAgICAgICAgaGVpZ2h0OiBqb2kubnVtYmVyKCkuaW50ZWdlcigpLmFsbG93KG51bGwpLFxuICAgICAgICAgICAgd2lkdGg6IGpvaS5udW1iZXIoKS5pbnRlZ2VyKCkuYWxsb3cobnVsbCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudW5rbm93bigpLFxuICAgICAgKSxcbiAgICAgIG1pbWVUeXBlczogam9pLmFycmF5KCkuaXRlbXMoam9pLnN0cmluZygpKSxcbiAgICAgIHJlc2l6ZU9wdGlvbnM6IGpvaVxuICAgICAgICAub2JqZWN0KClcbiAgICAgICAgLmtleXMoe1xuICAgICAgICAgIGJhY2tncm91bmQ6IGpvaS5zdHJpbmcoKSxcbiAgICAgICAgICBmYXN0U2hyaW5rT25Mb2FkOiBqb2kuYm9vbCgpLFxuICAgICAgICAgIGZpdDogam9pLnN0cmluZygpLFxuICAgICAgICAgIGhlaWdodDogam9pLm51bWJlcigpLmFsbG93KG51bGwpLFxuICAgICAgICAgIGtlcm5lbDogam9pLnN0cmluZygpLFxuICAgICAgICAgIHBvc2l0aW9uOiBqb2kuYWx0ZXJuYXRpdmVzKCkudHJ5KGpvaS5zdHJpbmcoKSwgam9pLm51bWJlcigpKSxcbiAgICAgICAgICB3aWR0aDogam9pLm51bWJlcigpLmFsbG93KG51bGwpLFxuICAgICAgICAgIHdpdGhvdXRFbmxhcmdlbWVudDogam9pLmJvb2woKSxcbiAgICAgICAgfSlcbiAgICAgICAgLmFsbG93KG51bGwpLFxuICAgICAgc3RhdGljRGlyOiBqb2kuc3RyaW5nKCksXG4gICAgICBzdGF0aWNPcHRpb25zOiBqb2kub2JqZWN0KCksXG4gICAgICBzdGF0aWNVUkw6IGpvaS5zdHJpbmcoKSxcbiAgICAgIHRlbXBGaWxlRGlyOiBqb2kuc3RyaW5nKCksXG4gICAgICB0cmltT3B0aW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLm9iamVjdCgpLmtleXMoe1xuICAgICAgICAgIGZvcm1hdDogam9pLnN0cmluZygpLFxuICAgICAgICAgIG9wdGlvbnM6IGpvaS5vYmplY3QoKSxcbiAgICAgICAgfSksXG4gICAgICAgIGpvaS5zdHJpbmcoKSxcbiAgICAgICAgam9pLm51bWJlcigpLFxuICAgICAgKSxcbiAgICAgIHVzZVRlbXBGaWxlczogam9pLmJvb2woKSxcbiAgICB9KSxcbiAgICBqb2kuYm9vbGVhbigpLFxuICApLFxuICB2ZXJzaW9uczogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICBqb2kub2JqZWN0KHtcbiAgICAgIGRyYWZ0czogam9pLmFsdGVybmF0aXZlcygpLnRyeShcbiAgICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgICAgYXV0b3NhdmU6IGpvaS5hbHRlcm5hdGl2ZXMoKS50cnkoXG4gICAgICAgICAgICBqb2kuYm9vbGVhbigpLFxuICAgICAgICAgICAgam9pLm9iamVjdCh7XG4gICAgICAgICAgICAgIGludGVydmFsOiBqb2kubnVtYmVyKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgam9pLmJvb2xlYW4oKSxcbiAgICAgICksXG4gICAgICBtYXhQZXJEb2M6IGpvaS5udW1iZXIoKSxcbiAgICB9KSxcbiAgICBqb2kuYm9vbGVhbigpLFxuICApLFxufSlcblxuZXhwb3J0IGRlZmF1bHQgY29sbGVjdGlvblNjaGVtYVxuIl0sIm5hbWVzIjpbInN0cmF0ZWd5QmFzZVNjaGVtYSIsImpvaSIsIm9iamVjdCIsImtleXMiLCJsb2dvdXQiLCJib29sZWFuIiwicmVmcmVzaCIsImNvbGxlY3Rpb25TY2hlbWEiLCJhY2Nlc3MiLCJhZG1pbiIsImZ1bmMiLCJjcmVhdGUiLCJkZWxldGUiLCJyZWFkIiwicmVhZFZlcnNpb25zIiwidW5sb2NrIiwidXBkYXRlIiwiY29tcG9uZW50cyIsIkFmdGVyTGlzdCIsImFycmF5IiwiaXRlbXMiLCJjb21wb25lbnRTY2hlbWEiLCJBZnRlckxpc3RUYWJsZSIsIkJlZm9yZUxpc3QiLCJCZWZvcmVMaXN0VGFibGUiLCJlZGl0IiwiUHJldmlld0J1dHRvbiIsIlB1Ymxpc2hCdXR0b24iLCJTYXZlQnV0dG9uIiwiU2F2ZURyYWZ0QnV0dG9uIiwidmlld3MiLCJFZGl0IiwiYWx0ZXJuYXRpdmVzIiwidHJ5IiwiQVBJIiwiY3VzdG9tVmlld1NjaGVtYSIsIkRlZmF1bHQiLCJMaXZlUHJldmlldyIsIlZlcnNpb24iLCJWZXJzaW9ucyIsIkxpc3QiLCJDb21wb25lbnQiLCJhY3Rpb25zIiwiZGVmYXVsdENvbHVtbnMiLCJzdHJpbmciLCJkZXNjcmlwdGlvbiIsImRpc2FibGVEdXBsaWNhdGUiLCJib29sIiwiZW5hYmxlUmljaFRleHRMaW5rIiwiZW5hYmxlUmljaFRleHRSZWxhdGlvbnNoaXAiLCJncm91cCIsInBhdHRlcm4iLCJoaWRkZW4iLCJoaWRlQVBJVVJMIiwiaG9va3MiLCJiZWZvcmVEdXBsaWNhdGUiLCJsaXN0U2VhcmNoYWJsZUZpZWxkcyIsImxpdmVQcmV2aWV3IiwibGl2ZVByZXZpZXdTY2hlbWEiLCJwYWdpbmF0aW9uIiwiZGVmYXVsdExpbWl0IiwibnVtYmVyIiwibGltaXRzIiwicHJldmlldyIsInVzZUFzVGl0bGUiLCJhdXRoIiwiY29va2llcyIsImRvbWFpbiIsInNhbWVTaXRlIiwic2VjdXJlIiwiZGVwdGgiLCJkaXNhYmxlTG9jYWxTdHJhdGVneSIsInZhbGlkIiwiZm9yZ290UGFzc3dvcmQiLCJnZW5lcmF0ZUVtYWlsSFRNTCIsImdlbmVyYXRlRW1haWxTdWJqZWN0IiwibG9ja1RpbWUiLCJtYXhMb2dpbkF0dGVtcHRzIiwicmVtb3ZlVG9rZW5Gcm9tUmVzcG9uc2VzIiwic3RyYXRlZ2llcyIsIm5hbWUiLCJyZXF1aXJlZCIsInN0cmF0ZWd5IiwibWF4QXJpdHkiLCJ0b2tlbkV4cGlyYXRpb24iLCJ1c2VBUElLZXkiLCJ2ZXJpZnkiLCJjdXN0b20iLCJhbnkiLCJkZWZhdWx0U29ydCIsImVuZHBvaW50cyIsImVuZHBvaW50c1NjaGVtYSIsImZpZWxkcyIsImdyYXBoUUwiLCJwbHVyYWxOYW1lIiwic2luZ3VsYXJOYW1lIiwiYWZ0ZXJDaGFuZ2UiLCJhZnRlckRlbGV0ZSIsImFmdGVyRm9yZ290UGFzc3dvcmQiLCJhZnRlckxvZ2luIiwiYWZ0ZXJMb2dvdXQiLCJhZnRlck1lIiwiYWZ0ZXJPcGVyYXRpb24iLCJhZnRlclJlYWQiLCJhZnRlclJlZnJlc2giLCJiZWZvcmVDaGFuZ2UiLCJiZWZvcmVEZWxldGUiLCJiZWZvcmVMb2dpbiIsImJlZm9yZU9wZXJhdGlvbiIsImJlZm9yZVJlYWQiLCJiZWZvcmVWYWxpZGF0ZSIsImluZGV4ZXMiLCJvcHRpb25zIiwibGFiZWxzIiwicGx1cmFsIiwic2luZ3VsYXIiLCJzbHVnIiwidGltZXN0YW1wcyIsInR5cGVzY3JpcHQiLCJpbnRlcmZhY2UiLCJ1cGxvYWQiLCJhZG1pblRodW1ibmFpbCIsImNyb3AiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwiZmlsZXNSZXF1aXJlZE9uQ3JlYXRlIiwiZm9jYWxQb2ludCIsImZvcm1hdE9wdGlvbnMiLCJmb3JtYXQiLCJoYW5kbGVycyIsImltYWdlU2l6ZXMiLCJoZWlnaHQiLCJpbnRlZ2VyIiwiYWxsb3ciLCJ3aWR0aCIsInVua25vd24iLCJtaW1lVHlwZXMiLCJyZXNpemVPcHRpb25zIiwiYmFja2dyb3VuZCIsImZhc3RTaHJpbmtPbkxvYWQiLCJmaXQiLCJrZXJuZWwiLCJwb3NpdGlvbiIsIndpdGhvdXRFbmxhcmdlbWVudCIsInN0YXRpY0RpciIsInN0YXRpY09wdGlvbnMiLCJzdGF0aWNVUkwiLCJ0ZW1wRmlsZURpciIsInRyaW1PcHRpb25zIiwidXNlVGVtcEZpbGVzIiwidmVyc2lvbnMiLCJkcmFmdHMiLCJhdXRvc2F2ZSIsImludGVydmFsIiwibWF4UGVyRG9jIl0sIm1hcHBpbmdzIjoiOzs7OytCQTZPQTs7O2VBQUE7Ozs0REE3T2dCO3dCQUVnQjtpQ0FLekI7Ozs7OztBQUVQLE1BQU1BLHFCQUFxQkMsWUFBRyxDQUFDQyxNQUFNLEdBQUdDLElBQUksQ0FBQztJQUMz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