create-payload-app 0.5.2 → 1.0.0

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.
@@ -1,184 +1,111 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
9
  });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
10
+ }
11
+ _export(exports, {
12
+ createProject: function() {
13
+ return createProject;
14
+ },
15
+ updatePackageJSON: function() {
16
+ return updatePackageJSON;
36
17
  }
37
- };
38
- var __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.updatePackageJSON = exports.createProject = void 0;
43
- var path_1 = __importDefault(require("path"));
44
- var chalk_1 = __importDefault(require("chalk"));
45
- var fs_extra_1 = __importDefault(require("fs-extra"));
46
- var execa_1 = __importDefault(require("execa"));
47
- var ora_1 = __importDefault(require("ora"));
48
- var degit_1 = __importDefault(require("degit"));
49
- var log_1 = require("../utils/log");
50
- var configure_payload_config_1 = require("./configure-payload-config");
51
- function createOrFindProjectDir(projectDir) {
52
- return __awaiter(this, void 0, void 0, function () {
53
- var pathExists;
54
- return __generator(this, function (_a) {
55
- switch (_a.label) {
56
- case 0: return [4 /*yield*/, fs_extra_1.default.pathExists(projectDir)];
57
- case 1:
58
- pathExists = _a.sent();
59
- if (!!pathExists) return [3 /*break*/, 3];
60
- return [4 /*yield*/, fs_extra_1.default.mkdir(projectDir)];
61
- case 2:
62
- _a.sent();
63
- _a.label = 3;
64
- case 3: return [2 /*return*/];
65
- }
66
- });
67
- });
18
+ });
19
+ const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
20
+ const _degit = /*#__PURE__*/ _interop_require_default(require("degit"));
21
+ const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
22
+ const _fsextra = /*#__PURE__*/ _interop_require_default(require("fs-extra"));
23
+ const _ora = /*#__PURE__*/ _interop_require_default(require("ora"));
24
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
25
+ const _log = require("../utils/log");
26
+ const _configurepayloadconfig = require("./configure-payload-config");
27
+ function _interop_require_default(obj) {
28
+ return obj && obj.__esModule ? obj : {
29
+ default: obj
30
+ };
68
31
  }
69
- function installDeps(args) {
70
- return __awaiter(this, void 0, void 0, function () {
71
- var cliArgs, projectDir, packageManager, installCmd, err_1;
72
- return __generator(this, function (_a) {
73
- switch (_a.label) {
74
- case 0:
75
- cliArgs = args.cliArgs, projectDir = args.projectDir, packageManager = args.packageManager;
76
- if (cliArgs['--no-deps']) {
77
- return [2 /*return*/, true];
78
- }
79
- installCmd = 'npm install --legacy-peer-deps';
80
- if (packageManager === 'yarn') {
81
- installCmd = 'yarn';
82
- }
83
- else if (packageManager === 'pnpm') {
84
- installCmd = 'pnpm install';
85
- }
86
- _a.label = 1;
87
- case 1:
88
- _a.trys.push([1, 3, , 4]);
89
- return [4 /*yield*/, execa_1.default.command(installCmd, {
90
- cwd: path_1.default.resolve(projectDir),
91
- })];
92
- case 2:
93
- _a.sent();
94
- return [2 /*return*/, true];
95
- case 3:
96
- err_1 = _a.sent();
97
- console.log({ err: err_1 });
98
- return [2 /*return*/, false];
99
- case 4: return [2 /*return*/];
100
- }
101
- });
102
- });
32
+ async function createOrFindProjectDir(projectDir) {
33
+ const pathExists = await _fsextra.default.pathExists(projectDir);
34
+ if (!pathExists) {
35
+ await _fsextra.default.mkdir(projectDir);
36
+ }
103
37
  }
104
- function createProject(args) {
105
- return __awaiter(this, void 0, void 0, function () {
106
- var cliArgs, projectName, projectDir, template, packageManager, dbDetails, emitter, spinner, lockPath, result;
107
- return __generator(this, function (_a) {
108
- switch (_a.label) {
109
- case 0:
110
- cliArgs = args.cliArgs, projectName = args.projectName, projectDir = args.projectDir, template = args.template, packageManager = args.packageManager, dbDetails = args.dbDetails;
111
- return [4 /*yield*/, createOrFindProjectDir(projectDir)];
112
- case 1:
113
- _a.sent();
114
- console.log("\n Creating project in ".concat(chalk_1.default.green(path_1.default.resolve(projectDir)), "\n"));
115
- if (!('url' in template)) return [3 /*break*/, 3];
116
- emitter = (0, degit_1.default)(template.url);
117
- return [4 /*yield*/, emitter.clone(projectDir)];
118
- case 2:
119
- _a.sent();
120
- _a.label = 3;
121
- case 3:
122
- spinner = (0, ora_1.default)('Checking latest Payload version...').start();
123
- return [4 /*yield*/, updatePackageJSON({ projectName: projectName, projectDir: projectDir })];
124
- case 4:
125
- _a.sent();
126
- return [4 /*yield*/, (0, configure_payload_config_1.configurePayloadConfig)({ projectDir: projectDir, dbDetails: dbDetails })
127
- // Remove yarn.lock file. This is only desired in Payload Cloud.
128
- ];
129
- case 5:
130
- _a.sent();
131
- lockPath = path_1.default.resolve(projectDir, 'yarn.lock');
132
- if (!fs_extra_1.default.existsSync(lockPath)) return [3 /*break*/, 7];
133
- return [4 /*yield*/, fs_extra_1.default.remove(lockPath)];
134
- case 6:
135
- _a.sent();
136
- _a.label = 7;
137
- case 7:
138
- spinner.text = 'Installing dependencies...';
139
- return [4 /*yield*/, installDeps({ cliArgs: cliArgs, projectDir: projectDir, packageManager: packageManager })];
140
- case 8:
141
- result = _a.sent();
142
- spinner.stop();
143
- spinner.clear();
144
- if (result) {
145
- (0, log_1.success)('Dependencies installed');
146
- }
147
- else {
148
- (0, log_1.error)('Error installing dependencies');
149
- }
150
- return [2 /*return*/];
151
- }
38
+ async function installDeps(args) {
39
+ const { cliArgs, packageManager, projectDir } = args;
40
+ if (cliArgs['--no-deps']) {
41
+ return true;
42
+ }
43
+ let installCmd = 'npm install --legacy-peer-deps';
44
+ if (packageManager === 'yarn') {
45
+ installCmd = 'yarn';
46
+ } else if (packageManager === 'pnpm') {
47
+ installCmd = 'pnpm install';
48
+ }
49
+ try {
50
+ await _execa.default.command(installCmd, {
51
+ cwd: _path.default.resolve(projectDir)
52
+ });
53
+ return true;
54
+ } catch (err) {
55
+ console.log({
56
+ err
152
57
  });
58
+ return false;
59
+ }
60
+ }
61
+ async function createProject(args) {
62
+ const { cliArgs, dbDetails, packageManager, projectDir, projectName, template } = args;
63
+ await createOrFindProjectDir(projectDir);
64
+ console.log(`\n Creating project in ${_chalk.default.green(_path.default.resolve(projectDir))}\n`);
65
+ if ('url' in template) {
66
+ const emitter = (0, _degit.default)(template.url);
67
+ await emitter.clone(projectDir);
68
+ }
69
+ const spinner = (0, _ora.default)('Checking latest Payload version...').start();
70
+ await updatePackageJSON({
71
+ projectDir,
72
+ projectName
153
73
  });
74
+ await (0, _configurepayloadconfig.configurePayloadConfig)({
75
+ dbDetails,
76
+ projectDir
77
+ });
78
+ // Remove yarn.lock file. This is only desired in Payload Cloud.
79
+ const lockPath = _path.default.resolve(projectDir, 'yarn.lock');
80
+ if (_fsextra.default.existsSync(lockPath)) {
81
+ await _fsextra.default.remove(lockPath);
82
+ }
83
+ spinner.text = 'Installing dependencies...';
84
+ const result = await installDeps({
85
+ cliArgs,
86
+ packageManager,
87
+ projectDir
88
+ });
89
+ spinner.stop();
90
+ spinner.clear();
91
+ if (result) {
92
+ (0, _log.success)('Dependencies installed');
93
+ } else {
94
+ (0, _log.error)('Error installing dependencies');
95
+ }
154
96
  }
155
- exports.createProject = createProject;
156
- function updatePackageJSON(args) {
157
- return __awaiter(this, void 0, void 0, function () {
158
- var projectName, projectDir, packageJsonPath, packageObj, err_2;
159
- return __generator(this, function (_a) {
160
- switch (_a.label) {
161
- case 0:
162
- projectName = args.projectName, projectDir = args.projectDir;
163
- packageJsonPath = path_1.default.resolve(projectDir, 'package.json');
164
- _a.label = 1;
165
- case 1:
166
- _a.trys.push([1, 4, , 5]);
167
- return [4 /*yield*/, fs_extra_1.default.readJson(packageJsonPath)];
168
- case 2:
169
- packageObj = _a.sent();
170
- packageObj.name = projectName;
171
- return [4 /*yield*/, fs_extra_1.default.writeJson(packageJsonPath, packageObj, { spaces: 2 })];
172
- case 3:
173
- _a.sent();
174
- return [3 /*break*/, 5];
175
- case 4:
176
- err_2 = _a.sent();
177
- (0, log_1.warning)('Unable to update name in package.json');
178
- return [3 /*break*/, 5];
179
- case 5: return [2 /*return*/];
180
- }
97
+ async function updatePackageJSON(args) {
98
+ const { projectDir, projectName } = args;
99
+ const packageJsonPath = _path.default.resolve(projectDir, 'package.json');
100
+ try {
101
+ const packageObj = await _fsextra.default.readJson(packageJsonPath);
102
+ packageObj.name = projectName;
103
+ await _fsextra.default.writeJson(packageJsonPath, packageObj, {
104
+ spaces: 2
181
105
  });
182
- });
106
+ } catch (err) {
107
+ (0, _log.warning)('Unable to update name in package.json');
108
+ }
183
109
  }
184
- exports.updatePackageJSON = updatePackageJSON;
110
+
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3JlYXRlLXByb2plY3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJ1xuaW1wb3J0IGRlZ2l0IGZyb20gJ2RlZ2l0J1xuaW1wb3J0IGV4ZWNhIGZyb20gJ2V4ZWNhJ1xuaW1wb3J0IGZzZSBmcm9tICdmcy1leHRyYSdcbmltcG9ydCBvcmEgZnJvbSAnb3JhJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuaW1wb3J0IHR5cGUgeyBDbGlBcmdzLCBEYkRldGFpbHMsIFBhY2thZ2VNYW5hZ2VyLCBQcm9qZWN0VGVtcGxhdGUgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZXJyb3IsIHN1Y2Nlc3MsIHdhcm5pbmcgfSBmcm9tICcuLi91dGlscy9sb2cnXG5pbXBvcnQgeyBjb25maWd1cmVQYXlsb2FkQ29uZmlnIH0gZnJvbSAnLi9jb25maWd1cmUtcGF5bG9hZC1jb25maWcnXG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU9yRmluZFByb2plY3REaXIocHJvamVjdERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBhdGhFeGlzdHMgPSBhd2FpdCBmc2UucGF0aEV4aXN0cyhwcm9qZWN0RGlyKVxuICBpZiAoIXBhdGhFeGlzdHMpIHtcbiAgICBhd2FpdCBmc2UubWtkaXIocHJvamVjdERpcilcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBpbnN0YWxsRGVwcyhhcmdzOiB7XG4gIGNsaUFyZ3M6IENsaUFyZ3NcbiAgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyXG4gIHByb2plY3REaXI6IHN0cmluZ1xufSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IGNsaUFyZ3MsIHBhY2thZ2VNYW5hZ2VyLCBwcm9qZWN0RGlyIH0gPSBhcmdzXG4gIGlmIChjbGlBcmdzWyctLW5vLWRlcHMnXSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgbGV0IGluc3RhbGxDbWQgPSAnbnBtIGluc3RhbGwgLS1sZWdhY3ktcGVlci1kZXBzJ1xuXG4gIGlmIChwYWNrYWdlTWFuYWdlciA9PT0gJ3lhcm4nKSB7XG4gICAgaW5zdGFsbENtZCA9ICd5YXJuJ1xuICB9IGVsc2UgaWYgKHBhY2thZ2VNYW5hZ2VyID09PSAncG5wbScpIHtcbiAgICBpbnN0YWxsQ21kID0gJ3BucG0gaW5zdGFsbCdcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EuY29tbWFuZChpbnN0YWxsQ21kLCB7XG4gICAgICBjd2Q6IHBhdGgucmVzb2x2ZShwcm9qZWN0RGlyKSxcbiAgICB9KVxuICAgIHJldHVybiB0cnVlXG4gIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgIGNvbnNvbGUubG9nKHsgZXJyIH0pXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVByb2plY3QoYXJnczoge1xuICBjbGlBcmdzOiBDbGlBcmdzXG4gIGRiRGV0YWlscz86IERiRGV0YWlsc1xuICBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXJcbiAgcHJvamVjdERpcjogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgdGVtcGxhdGU6IFByb2plY3RUZW1wbGF0ZVxufSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGNsaUFyZ3MsIGRiRGV0YWlscywgcGFja2FnZU1hbmFnZXIsIHByb2plY3REaXIsIHByb2plY3ROYW1lLCB0ZW1wbGF0ZSB9ID0gYXJnc1xuXG4gIGF3YWl0IGNyZWF0ZU9yRmluZFByb2plY3REaXIocHJvamVjdERpcilcblxuICBjb25zb2xlLmxvZyhgXFxuICBDcmVhdGluZyBwcm9qZWN0IGluICR7Y2hhbGsuZ3JlZW4ocGF0aC5yZXNvbHZlKHByb2plY3REaXIpKX1cXG5gKVxuXG4gIGlmICgndXJsJyBpbiB0ZW1wbGF0ZSkge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBkZWdpdCh0ZW1wbGF0ZS51cmwpXG4gICAgYXdhaXQgZW1pdHRlci5jbG9uZShwcm9qZWN0RGlyKVxuICB9XG5cbiAgY29uc3Qgc3Bpbm5lciA9IG9yYSgnQ2hlY2tpbmcgbGF0ZXN0IFBheWxvYWQgdmVyc2lvbi4uLicpLnN0YXJ0KClcblxuICBhd2FpdCB1cGRhdGVQYWNrYWdlSlNPTih7IHByb2plY3REaXIsIHByb2plY3ROYW1lIH0pXG4gIGF3YWl0IGNvbmZpZ3VyZVBheWxvYWRDb25maWcoeyBkYkRldGFpbHMsIHByb2plY3REaXIgfSlcblxuICAvLyBSZW1vdmUgeWFybi5sb2NrIGZpbGUuIFRoaXMgaXMgb25seSBkZXNpcmVkIGluIFBheWxvYWQgQ2xvdWQuXG4gIGNvbnN0IGxvY2tQYXRoID0gcGF0aC5yZXNvbHZlKHByb2plY3REaXIsICd5YXJuLmxvY2snKVxuICBpZiAoZnNlLmV4aXN0c1N5bmMobG9ja1BhdGgpKSB7XG4gICAgYXdhaXQgZnNlLnJlbW92ZShsb2NrUGF0aClcbiAgfVxuXG4gIHNwaW5uZXIudGV4dCA9ICdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLidcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW5zdGFsbERlcHMoeyBjbGlBcmdzLCBwYWNrYWdlTWFuYWdlciwgcHJvamVjdERpciB9KVxuICBzcGlubmVyLnN0b3AoKVxuICBzcGlubmVyLmNsZWFyKClcbiAgaWYgKHJlc3VsdCkge1xuICAgIHN1Y2Nlc3MoJ0RlcGVuZGVuY2llcyBpbnN0YWxsZWQnKVxuICB9IGVsc2Uge1xuICAgIGVycm9yKCdFcnJvciBpbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVBhY2thZ2VKU09OKGFyZ3M6IHtcbiAgcHJvamVjdERpcjogc3RyaW5nXG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwcm9qZWN0RGlyLCBwcm9qZWN0TmFtZSB9ID0gYXJnc1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdERpciwgJ3BhY2thZ2UuanNvbicpXG4gIHRyeSB7XG4gICAgY29uc3QgcGFja2FnZU9iaiA9IGF3YWl0IGZzZS5yZWFkSnNvbihwYWNrYWdlSnNvblBhdGgpXG4gICAgcGFja2FnZU9iai5uYW1lID0gcHJvamVjdE5hbWVcbiAgICBhd2FpdCBmc2Uud3JpdGVKc29uKHBhY2thZ2VKc29uUGF0aCwgcGFja2FnZU9iaiwgeyBzcGFjZXM6IDIgfSlcbiAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgd2FybmluZygnVW5hYmxlIHRvIHVwZGF0ZSBuYW1lIGluIHBhY2thZ2UuanNvbicpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVQcm9qZWN0IiwidXBkYXRlUGFja2FnZUpTT04iLCJjcmVhdGVPckZpbmRQcm9qZWN0RGlyIiwicHJvamVjdERpciIsInBhdGhFeGlzdHMiLCJmc2UiLCJta2RpciIsImluc3RhbGxEZXBzIiwiYXJncyIsImNsaUFyZ3MiLCJwYWNrYWdlTWFuYWdlciIsImluc3RhbGxDbWQiLCJleGVjYSIsImNvbW1hbmQiLCJjd2QiLCJwYXRoIiwicmVzb2x2ZSIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJkYkRldGFpbHMiLCJwcm9qZWN0TmFtZSIsInRlbXBsYXRlIiwiY2hhbGsiLCJncmVlbiIsImVtaXR0ZXIiLCJkZWdpdCIsInVybCIsImNsb25lIiwic3Bpbm5lciIsIm9yYSIsInN0YXJ0IiwiY29uZmlndXJlUGF5bG9hZENvbmZpZyIsImxvY2tQYXRoIiwiZXhpc3RzU3luYyIsInJlbW92ZSIsInRleHQiLCJyZXN1bHQiLCJzdG9wIiwiY2xlYXIiLCJzdWNjZXNzIiwiZXJyb3IiLCJwYWNrYWdlSnNvblBhdGgiLCJwYWNrYWdlT2JqIiwicmVhZEpzb24iLCJuYW1lIiwid3JpdGVKc29uIiwic3BhY2VzIiwid2FybmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUErQ3NCQSxhQUFhO2VBQWJBOztJQXlDQUMsaUJBQWlCO2VBQWpCQTs7OzhEQXhGSjs4REFDQTs4REFDQTtnRUFDRjs0REFDQTs2REFDQztxQkFJdUI7d0NBQ0Q7Ozs7OztBQUV2QyxlQUFlQyx1QkFBdUJDLFVBQWtCO0lBQ3RELE1BQU1DLGFBQWEsTUFBTUMsZ0JBQUcsQ0FBQ0QsVUFBVSxDQUFDRDtJQUN4QyxJQUFJLENBQUNDLFlBQVk7UUFDZixNQUFNQyxnQkFBRyxDQUFDQyxLQUFLLENBQUNIO0lBQ2xCO0FBQ0Y7QUFFQSxlQUFlSSxZQUFZQyxJQUkxQjtJQUNDLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxjQUFjLEVBQUVQLFVBQVUsRUFBRSxHQUFHSztJQUNoRCxJQUFJQyxPQUFPLENBQUMsWUFBWSxFQUFFO1FBQ3hCLE9BQU87SUFDVDtJQUNBLElBQUlFLGFBQWE7SUFFakIsSUFBSUQsbUJBQW1CLFFBQVE7UUFDN0JDLGFBQWE7SUFDZixPQUFPLElBQUlELG1CQUFtQixRQUFRO1FBQ3BDQyxhQUFhO0lBQ2Y7SUFFQSxJQUFJO1FBQ0YsTUFBTUMsY0FBSyxDQUFDQyxPQUFPLENBQUNGLFlBQVk7WUFDOUJHLEtBQUtDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDYjtRQUNwQjtRQUNBLE9BQU87SUFDVCxFQUFFLE9BQU9jLEtBQWM7UUFDckJDLFFBQVFDLEdBQUcsQ0FBQztZQUFFRjtRQUFJO1FBQ2xCLE9BQU87SUFDVDtBQUNGO0FBRU8sZUFBZWpCLGNBQWNRLElBT25DO0lBQ0MsTUFBTSxFQUFFQyxPQUFPLEVBQUVXLFNBQVMsRUFBRVYsY0FBYyxFQUFFUCxVQUFVLEVBQUVrQixXQUFXLEVBQUVDLFFBQVEsRUFBRSxHQUFHZDtJQUVsRixNQUFNTix1QkFBdUJDO0lBRTdCZSxRQUFRQyxHQUFHLENBQUMsQ0FBQyx3QkFBd0IsRUFBRUksY0FBSyxDQUFDQyxLQUFLLENBQUNULGFBQUksQ0FBQ0MsT0FBTyxDQUFDYixhQUFhLEVBQUUsQ0FBQztJQUVoRixJQUFJLFNBQVNtQixVQUFVO1FBQ3JCLE1BQU1HLFVBQVVDLElBQUFBLGNBQUssRUFBQ0osU0FBU0ssR0FBRztRQUNsQyxNQUFNRixRQUFRRyxLQUFLLENBQUN6QjtJQUN0QjtJQUVBLE1BQU0wQixVQUFVQyxJQUFBQSxZQUFHLEVBQUMsc0NBQXNDQyxLQUFLO0lBRS9ELE1BQU05QixrQkFBa0I7UUFBRUU7UUFBWWtCO0lBQVk7SUFDbEQsTUFBTVcsSUFBQUEsOENBQXNCLEVBQUM7UUFBRVo7UUFBV2pCO0lBQVc7SUFFckQsZ0VBQWdFO0lBQ2hFLE1BQU04QixXQUFXbEIsYUFBSSxDQUFDQyxPQUFPLENBQUNiLFlBQVk7SUFDMUMsSUFBSUUsZ0JBQUcsQ0FBQzZCLFVBQVUsQ0FBQ0QsV0FBVztRQUM1QixNQUFNNUIsZ0JBQUcsQ0FBQzhCLE1BQU0sQ0FBQ0Y7SUFDbkI7SUFFQUosUUFBUU8sSUFBSSxHQUFHO0lBQ2YsTUFBTUMsU0FBUyxNQUFNOUIsWUFBWTtRQUFFRTtRQUFTQztRQUFnQlA7SUFBVztJQUN2RTBCLFFBQVFTLElBQUk7SUFDWlQsUUFBUVUsS0FBSztJQUNiLElBQUlGLFFBQVE7UUFDVkcsSUFBQUEsWUFBTyxFQUFDO0lBQ1YsT0FBTztRQUNMQyxJQUFBQSxVQUFLLEVBQUM7SUFDUjtBQUNGO0FBRU8sZUFBZXhDLGtCQUFrQk8sSUFHdkM7SUFDQyxNQUFNLEVBQUVMLFVBQVUsRUFBRWtCLFdBQVcsRUFBRSxHQUFHYjtJQUNwQyxNQUFNa0Msa0JBQWtCM0IsYUFBSSxDQUFDQyxPQUFPLENBQUNiLFlBQVk7SUFDakQsSUFBSTtRQUNGLE1BQU13QyxhQUFhLE1BQU10QyxnQkFBRyxDQUFDdUMsUUFBUSxDQUFDRjtRQUN0Q0MsV0FBV0UsSUFBSSxHQUFHeEI7UUFDbEIsTUFBTWhCLGdCQUFHLENBQUN5QyxTQUFTLENBQUNKLGlCQUFpQkMsWUFBWTtZQUFFSSxRQUFRO1FBQUU7SUFDL0QsRUFBRSxPQUFPOUIsS0FBYztRQUNyQitCLElBQUFBLFlBQU8sRUFBQztJQUNWO0FBQ0YifQ==