1 | ;
|
2 | var __extends = (this && this.__extends) || (function () {
|
3 | var extendStatics = function (d, b) {
|
4 | extendStatics = Object.setPrototypeOf ||
|
5 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
6 | function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
7 | return extendStatics(d, b);
|
8 | };
|
9 | return function (d, b) {
|
10 | extendStatics(d, b);
|
11 | function __() { this.constructor = d; }
|
12 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
13 | };
|
14 | })();
|
15 | var __assign = (this && this.__assign) || function () {
|
16 | __assign = Object.assign || function(t) {
|
17 | for (var s, i = 1, n = arguments.length; i < n; i++) {
|
18 | s = arguments[i];
|
19 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
20 | t[p] = s[p];
|
21 | }
|
22 | return t;
|
23 | };
|
24 | return __assign.apply(this, arguments);
|
25 | };
|
26 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
27 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
28 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
29 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
30 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
31 | };
|
32 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
33 | return new (P || (P = Promise))(function (resolve, reject) {
|
34 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
35 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
36 | function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
37 | step((generator = generator.apply(thisArg, _arguments || [])).next());
|
38 | });
|
39 | };
|
40 | var __generator = (this && this.__generator) || function (thisArg, body) {
|
41 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
42 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
43 | function verb(n) { return function (v) { return step([n, v]); }; }
|
44 | function step(op) {
|
45 | if (f) throw new TypeError("Generator is already executing.");
|
46 | while (_) try {
|
47 | 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;
|
48 | if (y = 0, t) op = [op[0] & 2, t.value];
|
49 | switch (op[0]) {
|
50 | case 0: case 1: t = op; break;
|
51 | case 4: _.label++; return { value: op[1], done: false };
|
52 | case 5: _.label++; y = op[1]; op = [0]; continue;
|
53 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
54 | default:
|
55 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
56 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
57 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
58 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
59 | if (t[2]) _.ops.pop();
|
60 | _.trys.pop(); continue;
|
61 | }
|
62 | op = body.call(thisArg, _);
|
63 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
64 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
65 | }
|
66 | };
|
67 | var __read = (this && this.__read) || function (o, n) {
|
68 | var m = typeof Symbol === "function" && o[Symbol.iterator];
|
69 | if (!m) return o;
|
70 | var i = m.call(o), r, ar = [], e;
|
71 | try {
|
72 | while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
73 | }
|
74 | catch (error) { e = { error: error }; }
|
75 | finally {
|
76 | try {
|
77 | if (r && !r.done && (m = i["return"])) m.call(i);
|
78 | }
|
79 | finally { if (e) throw e.error; }
|
80 | }
|
81 | return ar;
|
82 | };
|
83 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
84 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
85 | };
|
86 | Object.defineProperty(exports, "__esModule", { value: true });
|
87 | var rest_1 = __importDefault(require("@octokit/rest"));
|
88 | var gitlog_1 = __importDefault(require("gitlog"));
|
89 | var util_1 = require("util");
|
90 | var typescript_memoize_1 = require("typescript-memoize");
|
91 | var release_1 = require("./release");
|
92 | var exec_promise_1 = __importDefault(require("./utils/exec-promise"));
|
93 | var logger_1 = require("./utils/logger");
|
94 | var gitlog = util_1.promisify(gitlog_1.default);
|
95 | function getRandomColor() {
|
96 | return Math.floor(Math.random() * 16777215)
|
97 | .toString(16)
|
98 | .padStart(6, '0');
|
99 | }
|
100 | exports.getRandomColor = getRandomColor;
|
101 | var GitAPIError = /** @class */ (function (_super) {
|
102 | __extends(GitAPIError, _super);
|
103 | function GitAPIError(api, args, origError) {
|
104 | return _super.call(this, "Error calling github: " + api + "\n\twith: " + JSON.stringify(args) + ".\n\t" + origError.message) || this;
|
105 | }
|
106 | return GitAPIError;
|
107 | }(Error));
|
108 | var makeCommentIdentifier = function (context) {
|
109 | return "<!-- GITHUB_RELEASE COMMENT: " + context + " -->";
|
110 | };
|
111 | // A class to interact with the local git instance and the git remote.
|
112 | // currently it only interfaces with GitHub.
|
113 | var Git = /** @class */ (function () {
|
114 | function Git(options, logger) {
|
115 | if (logger === void 0) { logger = logger_1.dummyLog(); }
|
116 | this.logger = logger;
|
117 | this.options = options;
|
118 | this.baseUrl = this.options.baseUrl || 'https://api.github.com';
|
119 | this.logger.veryVerbose.info("Initializing GitHub with: " + this.baseUrl);
|
120 | this.ghub = new rest_1.default({
|
121 | baseUrl: this.baseUrl,
|
122 | auth: "token " + this.options.token,
|
123 | previews: ['symmetra-preview']
|
124 | });
|
125 | }
|
126 | Git.prototype.getLatestReleaseInfo = function () {
|
127 | return __awaiter(this, void 0, void 0, function () {
|
128 | var latestRelease;
|
129 | return __generator(this, function (_a) {
|
130 | switch (_a.label) {
|
131 | case 0: return [4 /*yield*/, this.ghub.repos.getLatestRelease({
|
132 | owner: this.options.owner,
|
133 | repo: this.options.repo
|
134 | })];
|
135 | case 1:
|
136 | latestRelease = _a.sent();
|
137 | return [2 /*return*/, latestRelease.data];
|
138 | }
|
139 | });
|
140 | });
|
141 | };
|
142 | Git.prototype.getLatestRelease = function () {
|
143 | return __awaiter(this, void 0, void 0, function () {
|
144 | var latestRelease, e_1;
|
145 | return __generator(this, function (_a) {
|
146 | switch (_a.label) {
|
147 | case 0:
|
148 | _a.trys.push([0, 2, , 3]);
|
149 | return [4 /*yield*/, this.getLatestReleaseInfo()];
|
150 | case 1:
|
151 | latestRelease = _a.sent();
|
152 | this.logger.veryVerbose.info('Got response for "getLatestRelease":\n', latestRelease);
|
153 | this.logger.verbose.info('Got latest release:\n', latestRelease);
|
154 | return [2 /*return*/, latestRelease.tag_name];
|
155 | case 2:
|
156 | e_1 = _a.sent();
|
157 | if (e_1.status === 404) {
|
158 | this.logger.verbose.info("Couldn't find latest release on GitHub, using first commit.");
|
159 | return [2 /*return*/, this.getFirstCommit()];
|
160 | }
|
161 | throw e_1;
|
162 | case 3: return [2 /*return*/];
|
163 | }
|
164 | });
|
165 | });
|
166 | };
|
167 | Git.prototype.getCommitDate = function (sha) {
|
168 | return __awaiter(this, void 0, void 0, function () {
|
169 | var date, _a, day, time, timezone;
|
170 | return __generator(this, function (_b) {
|
171 | switch (_b.label) {
|
172 | case 0: return [4 /*yield*/, exec_promise_1.default('git', ['show', '-s', '--format=%ci', sha])];
|
173 | case 1:
|
174 | date = _b.sent();
|
175 | _a = __read(date.split(' '), 3), day = _a[0], time = _a[1], timezone = _a[2];
|
176 | return [2 /*return*/, day + "T" + time + timezone];
|
177 | }
|
178 | });
|
179 | });
|
180 | };
|
181 | Git.prototype.getFirstCommit = function () {
|
182 | return __awaiter(this, void 0, void 0, function () {
|
183 | var list;
|
184 | return __generator(this, function (_a) {
|
185 | switch (_a.label) {
|
186 | case 0: return [4 /*yield*/, exec_promise_1.default('git', ['rev-list', 'HEAD'])];
|
187 | case 1:
|
188 | list = _a.sent();
|
189 | return [2 /*return*/, list.split('\n').pop()];
|
190 | }
|
191 | });
|
192 | });
|
193 | };
|
194 | Git.prototype.getSha = function () {
|
195 | return __awaiter(this, void 0, void 0, function () {
|
196 | var result;
|
197 | return __generator(this, function (_a) {
|
198 | switch (_a.label) {
|
199 | case 0: return [4 /*yield*/, exec_promise_1.default('git', ['rev-parse', 'HEAD'])];
|
200 | case 1:
|
201 | result = _a.sent();
|
202 | this.logger.verbose.info("Got commit SHA from HEAD: " + result);
|
203 | return [2 /*return*/, result];
|
204 | }
|
205 | });
|
206 | });
|
207 | };
|
208 | Git.prototype.getLabels = function (prNumber) {
|
209 | return __awaiter(this, void 0, void 0, function () {
|
210 | var args, labels, e_2;
|
211 | return __generator(this, function (_a) {
|
212 | switch (_a.label) {
|
213 | case 0:
|
214 | this.logger.verbose.info("Getting labels for PR: " + prNumber);
|
215 | args = {
|
216 | owner: this.options.owner,
|
217 | repo: this.options.repo,
|
218 | number: prNumber
|
219 | };
|
220 | this.logger.verbose.info('Getting issue labels using:', args);
|
221 | _a.label = 1;
|
222 | case 1:
|
223 | _a.trys.push([1, 3, , 4]);
|
224 | return [4 /*yield*/, this.ghub.issues.listLabelsOnIssue(args)];
|
225 | case 2:
|
226 | labels = _a.sent();
|
227 | this.logger.veryVerbose.info('Got response for "listLabelsOnIssue":\n', labels);
|
228 | this.logger.verbose.info('Found labels on PR:\n', labels.data);
|
229 | return [2 /*return*/, labels.data.map(function (l) { return l.name; })];
|
230 | case 3:
|
231 | e_2 = _a.sent();
|
232 | throw new GitAPIError('listLabelsOnIssue', args, e_2);
|
233 | case 4: return [2 /*return*/];
|
234 | }
|
235 | });
|
236 | });
|
237 | };
|
238 | Git.prototype.getProjectLabels = function () {
|
239 | return __awaiter(this, void 0, void 0, function () {
|
240 | var args, labels, e_3;
|
241 | return __generator(this, function (_a) {
|
242 | switch (_a.label) {
|
243 | case 0:
|
244 | this.logger.verbose.info("Getting labels for project: " + this.options.repo);
|
245 | args = {
|
246 | owner: this.options.owner,
|
247 | repo: this.options.repo
|
248 | };
|
249 | _a.label = 1;
|
250 | case 1:
|
251 | _a.trys.push([1, 3, , 4]);
|
252 | return [4 /*yield*/, this.ghub.issues.listLabelsForRepo(args)];
|
253 | case 2:
|
254 | labels = _a.sent();
|
255 | this.logger.veryVerbose.info('Got response for "getProjectLabels":\n', labels);
|
256 | this.logger.verbose.info('Found labels on project:\n', labels.data);
|
257 | return [2 /*return*/, labels.data.map(function (l) { return l.name; })];
|
258 | case 3:
|
259 | e_3 = _a.sent();
|
260 | throw new GitAPIError('getProjectLabels', args, e_3);
|
261 | case 4: return [2 /*return*/];
|
262 | }
|
263 | });
|
264 | });
|
265 | };
|
266 | Git.prototype.getGitLog = function (start, end) {
|
267 | if (end === void 0) { end = 'HEAD'; }
|
268 | return __awaiter(this, void 0, void 0, function () {
|
269 | var log;
|
270 | return __generator(this, function (_a) {
|
271 | switch (_a.label) {
|
272 | case 0: return [4 /*yield*/, gitlog({
|
273 | repo: process.cwd(),
|
274 | number: Number.MAX_SAFE_INTEGER,
|
275 | fields: ['hash', 'authorName', 'authorEmail', 'rawBody'],
|
276 | branch: start.trim() + ".." + end.trim()
|
277 | })];
|
278 | case 1:
|
279 | log = _a.sent();
|
280 | return [2 /*return*/, log.map(function (commit) { return ({
|
281 | hash: commit.hash,
|
282 | authorName: commit.authorName,
|
283 | authorEmail: commit.authorEmail,
|
284 | subject: commit.rawBody
|
285 | }); })];
|
286 | }
|
287 | });
|
288 | });
|
289 | };
|
290 | Git.prototype.getUserByEmail = function (email) {
|
291 | return __awaiter(this, void 0, void 0, function () {
|
292 | var search;
|
293 | return __generator(this, function (_a) {
|
294 | switch (_a.label) {
|
295 | case 0: return [4 /*yield*/, this.ghub.search.users({
|
296 | q: "in:email " + email
|
297 | })];
|
298 | case 1:
|
299 | search = (_a.sent()).data;
|
300 | return [2 /*return*/, search && search.items.length > 0
|
301 | ? search.items[0]
|
302 | : { login: email }];
|
303 | }
|
304 | });
|
305 | });
|
306 | };
|
307 | Git.prototype.getUserByUsername = function (username) {
|
308 | return __awaiter(this, void 0, void 0, function () {
|
309 | return __generator(this, function (_a) {
|
310 | switch (_a.label) {
|
311 | case 0: return [4 /*yield*/, this.ghub.users.getByUsername({
|
312 | username: username
|
313 | })];
|
314 | case 1: return [2 /*return*/, (_a.sent()).data];
|
315 | }
|
316 | });
|
317 | });
|
318 | };
|
319 | Git.prototype.getPullRequest = function (pr) {
|
320 | return __awaiter(this, void 0, void 0, function () {
|
321 | var args, result;
|
322 | return __generator(this, function (_a) {
|
323 | switch (_a.label) {
|
324 | case 0:
|
325 | this.logger.verbose.info("Getting Pull Request: " + pr);
|
326 | args = {
|
327 | owner: this.options.owner,
|
328 | repo: this.options.repo,
|
329 | number: pr
|
330 | };
|
331 | this.logger.verbose.info('Getting pull request info using:', args);
|
332 | return [4 /*yield*/, this.ghub.pulls.get(args)];
|
333 | case 1:
|
334 | result = _a.sent();
|
335 | this.logger.veryVerbose.info('Got pull request data\n', result);
|
336 | this.logger.verbose.info('Got pull request info');
|
337 | return [2 /*return*/, result];
|
338 | }
|
339 | });
|
340 | });
|
341 | };
|
342 | Git.prototype.searchRepo = function (options) {
|
343 | return __awaiter(this, void 0, void 0, function () {
|
344 | var repo, result;
|
345 | return __generator(this, function (_a) {
|
346 | switch (_a.label) {
|
347 | case 0:
|
348 | repo = "repo:" + this.options.owner + "/" + this.options.repo;
|
349 | options.q = repo + " " + options.q;
|
350 | this.logger.verbose.info('Searching repo using:\n', options);
|
351 | return [4 /*yield*/, this.ghub.search.issuesAndPullRequests(options)];
|
352 | case 1:
|
353 | result = _a.sent();
|
354 | this.logger.veryVerbose.info('Got response from search\n', result);
|
355 | this.logger.verbose.info('Searched repo on GitHub.');
|
356 | return [2 /*return*/, result.data];
|
357 | }
|
358 | });
|
359 | });
|
360 | };
|
361 | Git.prototype.createStatus = function (prInfo) {
|
362 | return __awaiter(this, void 0, void 0, function () {
|
363 | var args, result;
|
364 | return __generator(this, function (_a) {
|
365 | switch (_a.label) {
|
366 | case 0:
|
367 | args = __assign({}, prInfo, { owner: this.options.owner, repo: this.options.repo });
|
368 | this.logger.verbose.info('Creating status using:\n', args);
|
369 | return [4 /*yield*/, this.ghub.repos.createStatus(args)];
|
370 | case 1:
|
371 | result = _a.sent();
|
372 | this.logger.veryVerbose.info('Got response from createStatues\n', result);
|
373 | this.logger.verbose.info('Created status on GitHub.');
|
374 | return [2 /*return*/, result];
|
375 | }
|
376 | });
|
377 | });
|
378 | };
|
379 | Git.prototype.createLabel = function (label, name) {
|
380 | return __awaiter(this, void 0, void 0, function () {
|
381 | var result;
|
382 | return __generator(this, function (_a) {
|
383 | switch (_a.label) {
|
384 | case 0:
|
385 | this.logger.verbose.info("Creating \"" + label + "\" label :\n" + name);
|
386 | return [4 /*yield*/, this.ghub.issues.createLabel({
|
387 | name: name,
|
388 | owner: this.options.owner,
|
389 | repo: this.options.repo,
|
390 | color: getRandomColor(),
|
391 | description: release_1.defaultLabelsDescriptions.get(label)
|
392 | })];
|
393 | case 1:
|
394 | result = _a.sent();
|
395 | this.logger.veryVerbose.info('Got response from createLabel\n', result);
|
396 | this.logger.verbose.info('Created label on GitHub.');
|
397 | return [2 /*return*/, result];
|
398 | }
|
399 | });
|
400 | });
|
401 | };
|
402 | Git.prototype.getProject = function () {
|
403 | return __awaiter(this, void 0, void 0, function () {
|
404 | var result;
|
405 | return __generator(this, function (_a) {
|
406 | switch (_a.label) {
|
407 | case 0:
|
408 | this.logger.verbose.info('Getting project from GitHub');
|
409 | return [4 /*yield*/, this.ghub.repos.get({
|
410 | owner: this.options.owner,
|
411 | repo: this.options.repo
|
412 | })];
|
413 | case 1:
|
414 | result = (_a.sent()).data;
|
415 | this.logger.veryVerbose.info('Got response from repos\n', result);
|
416 | this.logger.verbose.info('Got project information.');
|
417 | return [2 /*return*/, result];
|
418 | }
|
419 | });
|
420 | });
|
421 | };
|
422 | Git.prototype.getPullRequests = function (options) {
|
423 | return __awaiter(this, void 0, void 0, function () {
|
424 | var result;
|
425 | return __generator(this, function (_a) {
|
426 | switch (_a.label) {
|
427 | case 0:
|
428 | this.logger.verbose.info('Getting pull requests...');
|
429 | return [4 /*yield*/, this.ghub.pulls.list(__assign({ owner: this.options.owner.toLowerCase(), repo: this.options.repo.toLowerCase() }, options))];
|
430 | case 1:
|
431 | result = (_a.sent()).data;
|
432 | this.logger.veryVerbose.info('Got response from pull requests', result);
|
433 | this.logger.verbose.info('Got pull request');
|
434 | return [2 /*return*/, result];
|
435 | }
|
436 | });
|
437 | });
|
438 | };
|
439 | Git.prototype.getCommitsForPR = function (pr) {
|
440 | return __awaiter(this, void 0, void 0, function () {
|
441 | var result;
|
442 | return __generator(this, function (_a) {
|
443 | switch (_a.label) {
|
444 | case 0:
|
445 | this.logger.verbose.info("Getting commits for PR #" + pr);
|
446 | return [4 /*yield*/, this.ghub.pulls.listCommits({
|
447 | owner: this.options.owner.toLowerCase(),
|
448 | repo: this.options.repo.toLowerCase(),
|
449 | number: pr
|
450 | })];
|
451 | case 1:
|
452 | result = (_a.sent()).data;
|
453 | this.logger.veryVerbose.info("Got response from PR #" + pr + "\n", result);
|
454 | this.logger.verbose.info("Got commits for PR #" + pr + ".");
|
455 | return [2 /*return*/, result];
|
456 | }
|
457 | });
|
458 | });
|
459 | };
|
460 | Git.prototype.createComment = function (message, pr, context) {
|
461 | if (context === void 0) { context = 'default'; }
|
462 | return __awaiter(this, void 0, void 0, function () {
|
463 | var commentIdentifier, comments, oldMessage, result;
|
464 | return __generator(this, function (_a) {
|
465 | switch (_a.label) {
|
466 | case 0:
|
467 | commentIdentifier = makeCommentIdentifier(context);
|
468 | this.logger.verbose.info('Using comment identifier:', commentIdentifier);
|
469 | this.logger.verbose.info('Getting previous comments on:', pr);
|
470 | return [4 /*yield*/, this.ghub.issues.listComments({
|
471 | owner: this.options.owner,
|
472 | repo: this.options.repo,
|
473 | number: pr
|
474 | })];
|
475 | case 1:
|
476 | comments = _a.sent();
|
477 | this.logger.veryVerbose.info('Got PR comments\n', comments);
|
478 | oldMessage = comments.data.find(function (comment) {
|
479 | return comment.body.includes(commentIdentifier);
|
480 | });
|
481 | if (!oldMessage) return [3 /*break*/, 3];
|
482 | this.logger.verbose.info('Found previous message from same scope.');
|
483 | this.logger.verbose.info('Deleting previous comment');
|
484 | return [4 /*yield*/, this.ghub.issues.deleteComment({
|
485 | owner: this.options.owner,
|
486 | repo: this.options.repo,
|
487 | comment_id: oldMessage.id
|
488 | })];
|
489 | case 2:
|
490 | _a.sent();
|
491 | this.logger.verbose.info('Successfully deleted previous comment');
|
492 | _a.label = 3;
|
493 | case 3:
|
494 | this.logger.verbose.info('Creating new comment');
|
495 | return [4 /*yield*/, this.ghub.issues.createComment({
|
496 | owner: this.options.owner,
|
497 | repo: this.options.repo,
|
498 | number: pr,
|
499 | body: commentIdentifier + "\n" + message
|
500 | })];
|
501 | case 4:
|
502 | result = _a.sent();
|
503 | this.logger.veryVerbose.info('Got response from creating comment\n', result);
|
504 | this.logger.verbose.info('Successfully posted comment to PR');
|
505 | return [2 /*return*/, result];
|
506 | }
|
507 | });
|
508 | });
|
509 | };
|
510 | Git.prototype.publish = function (releaseNotes, tag) {
|
511 | return __awaiter(this, void 0, void 0, function () {
|
512 | var result;
|
513 | return __generator(this, function (_a) {
|
514 | switch (_a.label) {
|
515 | case 0:
|
516 | this.logger.verbose.info('Creating release on GitHub for tag:', tag);
|
517 | return [4 /*yield*/, this.ghub.repos.createRelease({
|
518 | owner: this.options.owner,
|
519 | repo: this.options.repo,
|
520 | tag_name: tag,
|
521 | body: releaseNotes
|
522 | })];
|
523 | case 1:
|
524 | result = _a.sent();
|
525 | this.logger.veryVerbose.info('Got response from createRelease\n', result);
|
526 | this.logger.verbose.info('Created GitHub release.');
|
527 | return [2 /*return*/, result];
|
528 | }
|
529 | });
|
530 | });
|
531 | };
|
532 | __decorate([
|
533 | typescript_memoize_1.Memoize()
|
534 | ], Git.prototype, "getLatestReleaseInfo", null);
|
535 | __decorate([
|
536 | typescript_memoize_1.Memoize()
|
537 | ], Git.prototype, "getLatestRelease", null);
|
538 | __decorate([
|
539 | typescript_memoize_1.Memoize()
|
540 | ], Git.prototype, "getLabels", null);
|
541 | __decorate([
|
542 | typescript_memoize_1.Memoize()
|
543 | ], Git.prototype, "getGitLog", null);
|
544 | __decorate([
|
545 | typescript_memoize_1.Memoize()
|
546 | ], Git.prototype, "getUserByEmail", null);
|
547 | __decorate([
|
548 | typescript_memoize_1.Memoize()
|
549 | ], Git.prototype, "getUserByUsername", null);
|
550 | __decorate([
|
551 | typescript_memoize_1.Memoize()
|
552 | ], Git.prototype, "getPullRequest", null);
|
553 | __decorate([
|
554 | typescript_memoize_1.Memoize()
|
555 | ], Git.prototype, "getProject", null);
|
556 | __decorate([
|
557 | typescript_memoize_1.Memoize()
|
558 | ], Git.prototype, "getCommitsForPR", null);
|
559 | return Git;
|
560 | }());
|
561 | exports.default = Git;
|
562 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUFpQztBQUNqQyxrREFBNkM7QUFDN0MsNkJBQWlDO0FBRWpDLHlEQUE2QztBQUU3QyxxQ0FBc0Q7QUFDdEQsc0VBQStDO0FBQy9DLHlDQUFtRDtBQUVuRCxJQUFNLE1BQU0sR0FBRyxnQkFBUyxDQUFDLGdCQUFVLENBQUMsQ0FBQztBQWNyQyxTQUFnQixjQUFjO0lBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDO1NBQ3hDLFFBQVEsQ0FBQyxFQUFFLENBQUM7U0FDWixRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLENBQUM7QUFKRCx3Q0FJQztBQUVEO0lBQTBCLCtCQUFLO0lBQzdCLHFCQUFZLEdBQVcsRUFBRSxJQUFZLEVBQUUsU0FBZ0I7ZUFDckQsa0JBQ0UsMkJBQXlCLEdBQUcsa0JBQWEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFDM0QsU0FBUyxDQUFDLE9BQ1YsQ0FDSDtJQUNILENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUFSRCxDQUEwQixLQUFLLEdBUTlCO0FBRUQsSUFBTSxxQkFBcUIsR0FBRyxVQUFDLE9BQWU7SUFDNUMsT0FBQSxrQ0FBZ0MsT0FBTyxTQUFNO0FBQTdDLENBQTZDLENBQUM7QUFFaEQsc0VBQXNFO0FBQ3RFLDRDQUE0QztBQUM1QztJQU9FLGFBQVksT0FBb0IsRUFBRSxNQUE0QjtRQUE1Qix1QkFBQSxFQUFBLFNBQWtCLGlCQUFRLEVBQUU7UUFDNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQztRQUVoRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsK0JBQTZCLElBQUksQ0FBQyxPQUFTLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksY0FBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixJQUFJLEVBQUUsV0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQU87WUFDbkMsUUFBUSxFQUFFLENBQUMsa0JBQWtCLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdLLGtDQUFvQixHQUExQjs7Ozs7NEJBQ3dCLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLOzRCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3lCQUN4QixDQUFDLEVBQUE7O3dCQUhJLGFBQWEsR0FBRyxTQUdwQjt3QkFFRixzQkFBTyxhQUFhLENBQUMsSUFBSSxFQUFDOzs7O0tBQzNCO0lBR0ssOEJBQWdCLEdBQXRCOzs7Ozs7O3dCQUUwQixxQkFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBQTs7d0JBQWpELGFBQWEsR0FBRyxTQUFpQzt3QkFFdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQix3Q0FBd0MsRUFDeEMsYUFBYSxDQUNkLENBQUM7d0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLGFBQWEsQ0FBQyxDQUFDO3dCQUVqRSxzQkFBTyxhQUFhLENBQUMsUUFBUSxFQUFDOzs7d0JBRTlCLElBQUksR0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7NEJBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsNkRBQTZELENBQzlELENBQUM7NEJBQ0Ysc0JBQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFDO3lCQUM5Qjt3QkFFRCxNQUFNLEdBQUMsQ0FBQzs7Ozs7S0FFWDtJQUVLLDJCQUFhLEdBQW5CLFVBQW9CLEdBQVc7Ozs7OzRCQUNoQixxQkFBTSxzQkFBVyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUE7O3dCQUFwRSxJQUFJLEdBQUcsU0FBNkQ7d0JBQ3BFLEtBQUEsT0FBd0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBQSxFQUF0QyxHQUFHLFFBQUEsRUFBRSxJQUFJLFFBQUEsRUFBRSxRQUFRLFFBQUEsQ0FBb0I7d0JBRTlDLHNCQUFVLEdBQUcsU0FBSSxJQUFJLEdBQUcsUUFBVSxFQUFDOzs7O0tBQ3BDO0lBRUssNEJBQWMsR0FBcEI7Ozs7OzRCQUNlLHFCQUFNLHNCQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUE7O3dCQUFyRCxJQUFJLEdBQUcsU0FBOEM7d0JBQzNELHNCQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFZLEVBQUM7Ozs7S0FDekM7SUFFSyxvQkFBTSxHQUFaOzs7Ozs0QkFDaUIscUJBQU0sc0JBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBQTs7d0JBQXhELE1BQU0sR0FBRyxTQUErQzt3QkFFOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUE2QixNQUFRLENBQUMsQ0FBQzt3QkFFaEUsc0JBQU8sTUFBTSxFQUFDOzs7O0tBQ2Y7SUFHSyx1QkFBUyxHQUFmLFVBQWdCLFFBQWdCOzs7Ozs7d0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBMEIsUUFBVSxDQUFDLENBQUM7d0JBRXpELElBQUksR0FBRzs0QkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLOzRCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJOzRCQUN2QixNQUFNLEVBQUUsUUFBUTt5QkFDakIsQ0FBQzt3QkFFRixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLENBQUM7Ozs7d0JBRzdDLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBdkQsTUFBTSxHQUFHLFNBQThDO3dCQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLHlDQUF5QyxFQUN6QyxNQUFNLENBQ1AsQ0FBQzt3QkFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUUvRCxzQkFBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxJQUFJLEVBQU4sQ0FBTSxDQUFDLEVBQUM7Ozt3QkFFcEMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsR0FBQyxDQUFDLENBQUM7Ozs7O0tBRXZEO0lBRUssOEJBQWdCLEdBQXRCOzs7Ozs7d0JBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QixpQ0FBK0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFNLENBQ25ELENBQUM7d0JBRUksSUFBSSxHQUFHOzRCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7NEJBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7eUJBQ3hCLENBQUM7Ozs7d0JBR2UscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUF2RCxNQUFNLEdBQUcsU0FBOEM7d0JBQzdELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDMUIsd0NBQXdDLEVBQ3hDLE1BQU0sQ0FDUCxDQUFDO3dCQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBRXBFLHNCQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksRUFBTixDQUFNLENBQUMsRUFBQzs7O3dCQUVwQyxNQUFNLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxHQUFDLENBQUMsQ0FBQzs7Ozs7S0FFdEQ7SUFHSyx1QkFBUyxHQUFmLFVBQWdCLEtBQWEsRUFBRSxHQUFZO1FBQVosb0JBQUEsRUFBQSxZQUFZOzs7Ozs0QkFDN0IscUJBQU0sTUFBTSxDQUFDOzRCQUN2QixJQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRTs0QkFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7NEJBQy9CLE1BQU0sRUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQzs0QkFDeEQsTUFBTSxFQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBSyxHQUFHLENBQUMsSUFBSSxFQUFJO3lCQUN6QyxDQUFDLEVBQUE7O3dCQUxJLEdBQUcsR0FBRyxTQUtWO3dCQUVGLHNCQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxDQUFDO2dDQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0NBQ2pCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQ0FDN0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dDQUMvQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQVE7NkJBQ3pCLENBQUMsRUFMdUIsQ0FLdkIsQ0FBQyxFQUFDOzs7O0tBQ0w7SUFHSyw0QkFBYyxHQUFwQixVQUFxQixLQUFhOzs7Ozs0QkFDaEIscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUMzQyxDQUFDLEVBQUUsY0FBWSxLQUFPO3lCQUN2QixDQUFDLEVBQUE7O3dCQUZJLE1BQU0sR0FBRyxDQUFDLFNBRWQsQ0FBQyxDQUFDLElBQUk7d0JBRVIsc0JBQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7Z0NBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQ0FDakIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFDOzs7O0tBQ3RCO0lBR0ssK0JBQWlCLEdBQXZCLFVBQXdCLFFBQWdCOzs7OzRCQUM5QixxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7NEJBQzFDLFFBQVEsVUFBQTt5QkFDVCxDQUFDLEVBQUE7NEJBRkYsc0JBQU8sQ0FBQyxTQUVOLENBQUMsQ0FBQyxJQUFJLEVBQUM7Ozs7S0FDVjtJQUdLLDRCQUFjLEdBQXBCLFVBQXFCLEVBQVU7Ozs7Ozt3QkFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUF5QixFQUFJLENBQUMsQ0FBQzt3QkFFbEQsSUFBSSxHQUFHOzRCQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7NEJBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7NEJBQ3ZCLE1BQU0sRUFBRSxFQUFFO3lCQUNYLENBQUM7d0JBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUVwRCxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUE7O3dCQUF4QyxNQUFNLEdBQUcsU0FBK0I7d0JBRTlDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7d0JBRWxELHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBRUssd0JBQVUsR0FBaEIsVUFBaUIsT0FBK0M7Ozs7Ozt3QkFDeEQsSUFBSSxHQUFHLFVBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFNBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFNLENBQUM7d0JBQy9ELE9BQU8sQ0FBQyxDQUFDLEdBQU0sSUFBSSxTQUFJLE9BQU8sQ0FBQyxDQUFHLENBQUM7d0JBRW5DLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFFOUMscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUE7O3dCQUE5RCxNQUFNLEdBQUcsU0FBcUQ7d0JBRXBFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7d0JBRXJELHNCQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUM7Ozs7S0FDcEI7SUFFSywwQkFBWSxHQUFsQixVQUFtQixNQUFlOzs7Ozs7d0JBQzFCLElBQUksZ0JBQ0wsTUFBTSxJQUNULEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUN4QixDQUFDO3dCQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFFNUMscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFBOzt3QkFBakQsTUFBTSxHQUFHLFNBQXdDO3dCQUV2RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQzFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3dCQUV0RCxzQkFBTyxNQUFNLEVBQUM7Ozs7S0FDZjtJQUVLLHlCQUFXLEdBQWpCLFVBQWtCLEtBQWEsRUFBRSxJQUFZOzs7Ozs7d0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBYSxLQUFLLG9CQUFjLElBQU0sQ0FBQyxDQUFDO3dCQUVsRCxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0NBQ2hELElBQUksTUFBQTtnQ0FDSixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dDQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dDQUN2QixLQUFLLEVBQUUsY0FBYyxFQUFFO2dDQUN2QixXQUFXLEVBQUUsbUNBQXlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQzs2QkFDbEQsQ0FBQyxFQUFBOzt3QkFOSSxNQUFNLEdBQUcsU0FNYjt3QkFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQ3hFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO3dCQUVyRCxzQkFBTyxNQUFNLEVBQUM7Ozs7S0FDZjtJQUdLLHdCQUFVLEdBQWhCOzs7Ozs7d0JBQ0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7d0JBRXhDLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQ0FDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQ0FDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTs2QkFDeEIsQ0FBQyxFQUFBOzt3QkFISSxNQUFNLEdBQUcsQ0FBQyxTQUdkLENBQUMsQ0FBQyxJQUFJO3dCQUVSLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7d0JBRXJELHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBRUssNkJBQWUsR0FBckIsVUFBc0IsT0FBdUM7Ozs7Ozt3QkFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7d0JBRXJDLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksWUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUN2QyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQ2xDLE9BQU8sRUFDVixFQUFBOzt3QkFKSSxNQUFNLEdBQUcsQ0FBQyxTQUlkLENBQUMsQ0FBQyxJQUFJO3dCQUVSLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7d0JBRTdDLHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBR0ssNkJBQWUsR0FBckIsVUFBc0IsRUFBVTs7Ozs7O3dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQTJCLEVBQUksQ0FBQyxDQUFDO3dCQUUxQyxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7Z0NBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0NBQ3ZDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0NBQ3JDLE1BQU0sRUFBRSxFQUFFOzZCQUNYLENBQUMsRUFBQTs7d0JBSkksTUFBTSxHQUFHLENBQUMsU0FJZCxDQUFDLENBQUMsSUFBSTt3QkFFUixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkJBQXlCLEVBQUUsT0FBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXVCLEVBQUUsTUFBRyxDQUFDLENBQUM7d0JBRXZELHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBRUssMkJBQWEsR0FBbkIsVUFBb0IsT0FBZSxFQUFFLEVBQVUsRUFBRSxPQUFtQjtRQUFuQix3QkFBQSxFQUFBLG1CQUFtQjs7Ozs7O3dCQUM1RCxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFFekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLGlCQUFpQixDQUFDLENBQUM7d0JBRXpFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFFN0MscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2dDQUNuRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dDQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dDQUN2QixNQUFNLEVBQUUsRUFBRTs2QkFDWCxDQUFDLEVBQUE7O3dCQUpJLFFBQVEsR0FBRyxTQUlmO3dCQUVGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFFdEQsVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQUEsT0FBTzs0QkFDM0MsT0FBQSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFBeEMsQ0FBd0MsQ0FDekMsQ0FBQzs2QkFFRSxVQUFVLEVBQVYsd0JBQVU7d0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7d0JBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3dCQUV0RCxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0NBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7Z0NBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Z0NBQ3ZCLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTs2QkFDMUIsQ0FBQyxFQUFBOzt3QkFKRixTQUlFLENBQUM7d0JBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7Ozt3QkFHcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7d0JBRWxDLHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQ0FDbEQsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQ0FDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQ0FDdkIsTUFBTSxFQUFFLEVBQUU7Z0NBQ1YsSUFBSSxFQUFLLGlCQUFpQixVQUFLLE9BQVM7NkJBQ3pDLENBQUMsRUFBQTs7d0JBTEksTUFBTSxHQUFHLFNBS2I7d0JBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQixzQ0FBc0MsRUFDdEMsTUFBTSxDQUNQLENBQUM7d0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7d0JBRTlELHNCQUFPLE1BQU0sRUFBQzs7OztLQUNmO0lBRUsscUJBQU8sR0FBYixVQUFjLFlBQW9CLEVBQUUsR0FBVzs7Ozs7O3dCQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBRXRELHFCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztnQ0FDakQsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQ0FDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQ0FDdkIsUUFBUSxFQUFFLEdBQUc7Z0NBQ2IsSUFBSSxFQUFFLFlBQVk7NkJBQ25CLENBQUMsRUFBQTs7d0JBTEksTUFBTSxHQUFHLFNBS2I7d0JBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQzt3QkFFcEQsc0JBQU8sTUFBTSxFQUFDOzs7O0tBQ2Y7SUE1VEQ7UUFEQyw0QkFBTyxFQUFFO21EQVFUO0lBR0Q7UUFEQyw0QkFBTyxFQUFFOytDQXNCVDtJQXVCRDtRQURDLDRCQUFPLEVBQUU7d0NBd0JUO0lBMkJEO1FBREMsNEJBQU8sRUFBRTt3Q0FlVDtJQUdEO1FBREMsNEJBQU8sRUFBRTs2Q0FTVDtJQUdEO1FBREMsNEJBQU8sRUFBRTtnREFLVDtJQUdEO1FBREMsNEJBQU8sRUFBRTs2Q0FrQlQ7SUFtREQ7UUFEQyw0QkFBTyxFQUFFO3lDQWFUO0lBa0JEO1FBREMsNEJBQU8sRUFBRTs4Q0FjVDtJQW1FSCxVQUFDO0NBQUEsQUFsVkQsSUFrVkM7a0JBbFZvQixHQUFHIn0= |
\ | No newline at end of file |