formflux 0.0.8 → 0.1.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.
- package/dist/EventHandlers.js +24 -7
- package/dist/EventHandlers.js.map +1 -1
- package/dist/ExtractContent.js +60 -49
- package/dist/ExtractContent.js.map +1 -1
- package/dist/FormFlux.js +505 -447
- package/dist/FormFlux.js.map +1 -1
- package/dist/FormFluxError.js +25 -6
- package/dist/FormFluxError.js.map +1 -1
- package/dist/SetBodyContentToReq.js +28 -26
- package/dist/SetBodyContentToReq.js.map +1 -1
- package/dist/SetFileContentToReqFile.js +15 -14
- package/dist/SetFileContentToReqFile.js.map +1 -1
- package/dist/WriteFileContent.js +48 -46
- package/dist/WriteFileContent.js.map +1 -1
- package/dist/defaultOptions.js +2 -2
- package/dist/defaultOptions.js.map +1 -1
- package/dist/helpers/resBodyMaker.js +6 -5
- package/dist/helpers/resBodyMaker.js.map +1 -1
- package/dist/setDatatoReqobj.js +9 -8
- package/dist/setDatatoReqobj.js.map +1 -1
- package/dist/setFileNameToBody.js +30 -28
- package/dist/setFileNameToBody.js.map +1 -1
- package/package.json +1 -2
package/dist/EventHandlers.js
CHANGED
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
2
17
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
18
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
19
|
};
|
|
5
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
21
|
+
var node_events_1 = __importDefault(require("node:events"));
|
|
22
|
+
var EventHandlers = /** @class */ (function (_super) {
|
|
23
|
+
__extends(EventHandlers, _super);
|
|
24
|
+
function EventHandlers() {
|
|
25
|
+
return _super.call(this) || this;
|
|
10
26
|
}
|
|
11
|
-
emitMessage(eventName, message) {
|
|
27
|
+
EventHandlers.prototype.emitMessage = function (eventName, message) {
|
|
12
28
|
this.emit(eventName, message);
|
|
13
|
-
}
|
|
14
|
-
|
|
29
|
+
};
|
|
30
|
+
return EventHandlers;
|
|
31
|
+
}(node_events_1.default));
|
|
15
32
|
exports.default = new EventHandlers();
|
|
16
33
|
//# sourceMappingURL=EventHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventHandlers.js","sourceRoot":"","sources":["../src/EventHandlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EventHandlers.js","sourceRoot":"","sources":["../src/EventHandlers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,4DAAuC;AAEtC;IAA4B,iCAAY;IACrC;QACI,OAAA,MAAK,WAAE,SAAC;IACZ,CAAC;IAED,mCAAW,GAAX,UAAY,SAAiB,EAAE,OAAwB;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IACL,oBAAC;AAAD,CAAC,AARA,CAA4B,qBAAY,GAQxC;AAED,kBAAe,IAAI,aAAa,EAAE,CAAC"}
|
package/dist/ExtractContent.js
CHANGED
|
@@ -3,41 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
var FormFluxError_1 = __importDefault(require("./FormFluxError"));
|
|
7
|
+
var ExtractFileContent = /** @class */ (function () {
|
|
8
|
+
function ExtractFileContent(obj, options, fieldArr, singleObj) {
|
|
9
9
|
this.obj = obj;
|
|
10
10
|
this.options = options;
|
|
11
11
|
this.fieldArr = fieldArr;
|
|
12
12
|
this.singleObj = singleObj;
|
|
13
13
|
}
|
|
14
|
-
extraction() {
|
|
14
|
+
ExtractFileContent.prototype.extraction = function () {
|
|
15
15
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
16
|
-
for (
|
|
16
|
+
for (var _i = 0, _h = this.obj.data; _i < _h.length; _i++) {
|
|
17
|
+
var val = _h[_i];
|
|
17
18
|
if (val.includes("\r\n\r\n") && val.includes("Content-Type")) {
|
|
18
|
-
|
|
19
|
-
this.obj.fieldNameFile.push(val.split(
|
|
19
|
+
var _j = val.split("\r\n\r\n"), meta = _j[0], content = _j[1];
|
|
20
|
+
this.obj.fieldNameFile.push(val.split("name=\"")[1].substring(0, val.split("name=\"")[1].indexOf("\"")));
|
|
20
21
|
this.obj.content.push(Buffer.from(content, "binary"));
|
|
21
22
|
if (this.options && this.options["maxFileSize"] && Buffer.from(content, "binary").length > this.options["maxFileSize"])
|
|
22
23
|
throw new FormFluxError_1.default("File size exceeded limit", 400);
|
|
23
24
|
this.obj.metaData.push(meta);
|
|
24
25
|
}
|
|
25
26
|
else if (!val.includes("Content-Type")) {
|
|
26
|
-
this.obj.fieldNameBody.push(val.split(
|
|
27
|
+
this.obj.fieldNameBody.push(val.split("name=\"")[1].substring(0, val.split("name=\"")[1].indexOf("\"")));
|
|
27
28
|
this.obj.contentBody.push(val === null || val === void 0 ? void 0 : val.split("\r\n\r\n")[1].substring(0, val === null || val === void 0 ? void 0 : val.split("\r\n\r\n")[1].indexOf("\r\n")));
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
// for single file checks
|
|
31
32
|
if (this.singleObj) {
|
|
32
|
-
|
|
33
|
-
for (
|
|
33
|
+
var count = 0;
|
|
34
|
+
for (var _k = 0, _l = this.obj.metaData; _k < _l.length; _k++) {
|
|
35
|
+
var val = _l[_k];
|
|
34
36
|
if (val.includes("filename") &&
|
|
35
|
-
val.split(
|
|
37
|
+
val.split("name=\"")[1].substring(0, val.split("name=\"")[1].indexOf("\"")) == this.singleObj) {
|
|
36
38
|
count++;
|
|
37
39
|
if (count > 1)
|
|
38
40
|
throw new FormFluxError_1.default("Too many files", 429);
|
|
39
41
|
}
|
|
40
|
-
else if (val.includes("filename") && val.split(
|
|
42
|
+
else if (val.includes("filename") && val.split("name=\"")[1].substring(0, val.split("name=\"")[1].indexOf("\"")) != this.singleObj)
|
|
41
43
|
throw new FormFluxError_1.default("Unexpected field", 400);
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -53,32 +55,33 @@ class ExtractFileContent {
|
|
|
53
55
|
if (this.options.maxFileCount < this.options.minFileCount)
|
|
54
56
|
throw new FormFluxError_1.default("minFileCount should be less than maxFileCount", 500);
|
|
55
57
|
if (this.obj.content.length < ((_d = this.options) === null || _d === void 0 ? void 0 : _d.minFileCount))
|
|
56
|
-
throw new FormFluxError_1.default(
|
|
58
|
+
throw new FormFluxError_1.default("At least ".concat((_e = this.options) === null || _e === void 0 ? void 0 : _e.minFileCount, " file(s) required"), 400);
|
|
57
59
|
}
|
|
58
60
|
//check each fields
|
|
59
61
|
if (this.fieldArr && ((_f = this.fieldArr) === null || _f === void 0 ? void 0 : _f.length) != 0) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
var fieldStart = 0;
|
|
63
|
+
var fieldEnd = this.fieldArr.length - 1;
|
|
64
|
+
var fieldObj = {};
|
|
65
|
+
var isCountField = false;
|
|
64
66
|
while (fieldStart <= fieldEnd) {
|
|
65
|
-
fieldObj[
|
|
66
|
-
fieldObj[
|
|
67
|
+
fieldObj["".concat(this.fieldArr[fieldStart].name)] = [];
|
|
68
|
+
fieldObj["".concat(this.fieldArr[fieldStart].name, "Check")] = false;
|
|
67
69
|
if (fieldStart == fieldEnd)
|
|
68
70
|
break;
|
|
69
|
-
fieldObj[
|
|
70
|
-
fieldObj[
|
|
71
|
+
fieldObj["".concat(this.fieldArr[fieldEnd].name)] = [];
|
|
72
|
+
fieldObj["".concat(this.fieldArr[fieldEnd].name, "Check")] = false;
|
|
71
73
|
fieldStart++;
|
|
72
74
|
fieldEnd--;
|
|
73
75
|
}
|
|
74
76
|
if (this.obj.metaData.length != 0) {
|
|
75
|
-
|
|
76
|
-
for (
|
|
77
|
-
|
|
77
|
+
var header = void 0;
|
|
78
|
+
for (var _m = 0, _o = this.obj.metaData; _m < _o.length; _m++) {
|
|
79
|
+
var val = _o[_m];
|
|
80
|
+
var count = 0;
|
|
78
81
|
if (val.includes("filename")) {
|
|
79
|
-
|
|
80
|
-
header = val.split(
|
|
81
|
-
if (header.substring(0, header.indexOf(
|
|
82
|
+
var _loop_1 = function (item) {
|
|
83
|
+
header = val.split("name=\"")[1];
|
|
84
|
+
if (header.substring(0, header.indexOf("\"")) == item.name) {
|
|
82
85
|
fieldObj[item.name].push(1);
|
|
83
86
|
count++;
|
|
84
87
|
// check if min is greater then max count
|
|
@@ -87,30 +90,35 @@ class ExtractFileContent {
|
|
|
87
90
|
if (item.maxFileCount && fieldObj[item.name].length > item.maxFileCount)
|
|
88
91
|
throw new FormFluxError_1.default("Too may files", 429);
|
|
89
92
|
// set the minCountfield
|
|
90
|
-
if (item.minFileCount && !fieldObj[
|
|
93
|
+
if (item.minFileCount && !fieldObj["".concat(item.name, "minCount")]) {
|
|
91
94
|
isCountField = true;
|
|
92
95
|
}
|
|
93
96
|
// each field filesize check
|
|
94
|
-
if (item.maxFileSize && !fieldObj[
|
|
95
|
-
|
|
96
|
-
rawContent.forEach(cont
|
|
97
|
+
if (item.maxFileSize && !fieldObj["".concat(item.name, "Check")]) {
|
|
98
|
+
var rawContent = this_1.obj.data.filter(function (x) { return x.includes("name=\"".concat(item.name, "\"")) && x.includes("Content-Type"); });
|
|
99
|
+
rawContent.forEach(function (cont) {
|
|
97
100
|
if (Buffer.from(cont.split("\r\n\r\n")[1], "binary").length > item.maxFileSize)
|
|
98
101
|
throw new FormFluxError_1.default("File size exceeded limit", 400);
|
|
99
102
|
});
|
|
100
|
-
fieldObj[
|
|
103
|
+
fieldObj["".concat(item.name, "Check")] = true;
|
|
101
104
|
}
|
|
102
105
|
}
|
|
106
|
+
};
|
|
107
|
+
var this_1 = this;
|
|
108
|
+
for (var _p = 0, _q = this.fieldArr; _p < _q.length; _p++) {
|
|
109
|
+
var item = _q[_p];
|
|
110
|
+
_loop_1(item);
|
|
103
111
|
}
|
|
104
112
|
if (count <= 0)
|
|
105
113
|
throw new FormFluxError_1.default("Unexpected Field", 400); // invalid field
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
116
|
if (isCountField) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
for (
|
|
112
|
-
if (this.fieldArr[
|
|
113
|
-
throw new FormFluxError_1.default(
|
|
117
|
+
var i = 0;
|
|
118
|
+
var filterKeyVals = Object.entries(fieldObj).filter(function (x) { return !x[0].includes("Check"); });
|
|
119
|
+
for (var i_1 = 0; i_1 < filterKeyVals.length; i_1++) {
|
|
120
|
+
if (this.fieldArr[i_1].minFileCount && filterKeyVals[i_1][1]["length"] < this.fieldArr[i_1].minFileCount)
|
|
121
|
+
throw new FormFluxError_1.default("At least ".concat(this.fieldArr[i_1].minFileCount, " file(s) required for ").concat(this.fieldArr[i_1].name, " field"), 400);
|
|
114
122
|
}
|
|
115
123
|
}
|
|
116
124
|
}
|
|
@@ -118,13 +126,14 @@ class ExtractFileContent {
|
|
|
118
126
|
this.obj.data = null; //*******emptying*******
|
|
119
127
|
//********maxFields validation*******
|
|
120
128
|
if (this.options && ((_g = this.options) === null || _g === void 0 ? void 0 : _g.maxFields)) {
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
var countFileFields = 0;
|
|
130
|
+
var countBodyFields = 0;
|
|
123
131
|
if (this.obj.fieldNameFile.length > 0) {
|
|
124
|
-
|
|
125
|
-
for (
|
|
126
|
-
|
|
127
|
-
|
|
132
|
+
var obj = {};
|
|
133
|
+
for (var _r = 0, _s = this.obj.fieldNameFile; _r < _s.length; _r++) {
|
|
134
|
+
var field = _s[_r];
|
|
135
|
+
if (!Object.keys(obj).includes("".concat(field))) {
|
|
136
|
+
obj["".concat(field)] = 1;
|
|
128
137
|
countFileFields += 1;
|
|
129
138
|
}
|
|
130
139
|
else
|
|
@@ -134,10 +143,11 @@ class ExtractFileContent {
|
|
|
134
143
|
throw new FormFluxError_1.default("Too many fields", 429);
|
|
135
144
|
}
|
|
136
145
|
if (this.obj.fieldNameBody.length > 0) {
|
|
137
|
-
|
|
138
|
-
for (
|
|
139
|
-
|
|
140
|
-
|
|
146
|
+
var obj = {};
|
|
147
|
+
for (var _t = 0, _u = this.obj.fieldNameBody; _t < _u.length; _t++) {
|
|
148
|
+
var field = _u[_t];
|
|
149
|
+
if (!Object.keys(obj).includes("".concat(field))) {
|
|
150
|
+
obj["".concat(field)] = 1;
|
|
141
151
|
countBodyFields += 1;
|
|
142
152
|
}
|
|
143
153
|
else
|
|
@@ -149,7 +159,8 @@ class ExtractFileContent {
|
|
|
149
159
|
if (countBodyFields + countFileFields > this.options.maxFields)
|
|
150
160
|
throw new FormFluxError_1.default("Too many fields", 429);
|
|
151
161
|
}
|
|
152
|
-
}
|
|
153
|
-
|
|
162
|
+
};
|
|
163
|
+
return ExtractFileContent;
|
|
164
|
+
}());
|
|
154
165
|
exports.default = ExtractFileContent;
|
|
155
166
|
//# sourceMappingURL=ExtractContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractContent.js","sourceRoot":"","sources":["../src/ExtractContent.ts"],"names":[],"mappings":";;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"ExtractContent.js","sourceRoot":"","sources":["../src/ExtractContent.ts"],"names":[],"mappings":";;;;;AAEA,kEAA4C;AAE5C;IAMI,4BAAY,GAAW,EAAE,OAA+B,EAAE,QAA6B,EAAE,SAAwB;QAE7G,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IACD,uCAAU,GAAV;;QACI,KAAgB,UAAa,EAAb,KAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAb,cAAa,EAAb,IAAa,EAAE,CAAC;YAA3B,IAAI,GAAG,SAAA;YACR,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrD,IAAA,KAAkB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAtC,IAAI,QAAA,EAAE,OAAO,QAAyB,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAG,CAAC,CAAC,CAAC,CAAC;gBACtG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAEtD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBAClH,MAAM,IAAI,uBAAa,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gBAC7D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAG,CAAC,CAAC,CAAC,CAAC;gBACtG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjH,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAgB,UAAiB,EAAjB,KAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAjB,cAAiB,EAAjB,IAAiB,EAAE,CAAC;gBAA/B,IAAI,GAAG,SAAA;gBACR,IACI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACxB,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAC5F,CAAC;oBACC,KAAK,EAAE,CAAC;oBACR,IAAI,KAAK,GAAG,CAAC;wBACT,MAAM,IAAI,uBAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC;qBACI,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS;oBAC3H,MAAM,IAAI,uBAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QACD,qBAAqB;QACrB,IAAI,IAAI,CAAC,OAAO,KAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAA,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;gBAClF,MAAM,IAAI,uBAAa,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;YAElF,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAA;gBACpD,MAAM,IAAI,uBAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,KAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAA,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY;gBACrD,MAAM,IAAI,uBAAa,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;YAElF,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAA;gBACpD,MAAM,IAAI,uBAAa,CAAC,mBAAY,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,sBAAmB,EAAE,GAAG,CAAC,CAAC;QAChG,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,KAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,YAAY,GAAY,KAAK,CAAC;YAClC,OAAO,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAC5B,QAAQ,CAAC,UAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAE,CAAC,GAAG,EAAE,CAAC;gBACnD,QAAQ,CAAC,UAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,UAAO,CAAC,GAAG,KAAK,CAAC;gBAC3D,IAAI,UAAU,IAAI,QAAQ;oBAAE,MAAM;gBAClC,QAAQ,CAAC,UAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAE,CAAC,GAAG,EAAE,CAAC;gBACjD,QAAQ,CAAC,UAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,UAAO,CAAC,GAAG,KAAK,CAAC;gBACzD,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,CAAC;YACf,CAAC;YAED,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,IAAI,MAAM,SAAQ,CAAC;gBACnB,KAAgB,UAAiB,EAAjB,KAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAjB,cAAiB,EAAjB,IAAiB,EAAE,CAAC;oBAA/B,IAAI,GAAG,SAAA;oBACR,IAAI,KAAK,GAAW,CAAC,CAAC;oBACtB,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gDAClB,IAAI;4BACT,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,SAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCACxD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCAC5B,KAAK,EAAE,CAAC;gCAER,yCAAyC;gCACzC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;oCAC/E,MAAM,IAAI,uBAAa,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;gCAElF,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY;oCACnE,MAAM,IAAI,uBAAa,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gCAElD,wBAAwB;gCACxB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAG,IAAI,CAAC,IAAI,aAAU,CAAC,EAAE,CAAC;oCACzD,YAAY,GAAG,IAAI,CAAC;gCACxB,CAAC;gCAED,4BAA4B;gCAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,CAAC,UAAG,IAAI,CAAC,IAAI,UAAO,CAAC,EAAE,CAAC;oCACrD,IAAI,UAAU,GAAG,OAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,iBAAS,IAAI,CAAC,IAAI,OAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAA/D,CAA+D,CAAC,CAAC;oCAC5G,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI;wCAEnB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW;4CAC1E,MAAM,IAAI,uBAAa,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;oCACjE,CAAC,CAAC,CAAC;oCACH,QAAQ,CAAC,UAAG,IAAI,CAAC,IAAI,UAAO,CAAC,GAAG,IAAI,CAAC;gCACzC,CAAC;4BACL,CAAC;;;wBA5BL,KAAiB,UAAa,EAAb,KAAA,IAAI,CAAC,QAAQ,EAAb,cAAa,EAAb,IAAa;4BAAzB,IAAI,IAAI,SAAA;oCAAJ,IAAI;yBA6BZ;wBACD,IAAI,KAAK,IAAI,CAAC;4BAAE,MAAM,IAAI,uBAAa,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB;oBACtF,CAAC;gBACL,CAAC;gBAED,IAAI,YAAY,EAAE,CAAC;oBACf,IAAI,CAAC,GAAG,CAAC,CAAC;oBACV,IAAI,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAvB,CAAuB,CAAC,CAAC;oBAClF,KAAK,IAAI,GAAC,GAAG,CAAC,EAAE,GAAC,GAAG,aAAa,CAAC,MAAM,EAAE,GAAC,EAAE,EAAE,CAAC;wBAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAC,CAAC,CAAC,YAAY,IAAI,aAAa,CAAC,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAC,CAAC,CAAC,YAAY;4BAC9F,MAAM,IAAI,uBAAa,CAAC,mBAAY,IAAI,CAAC,QAAQ,CAAC,GAAC,CAAC,CAAC,YAAY,mCAAyB,IAAI,CAAC,QAAQ,CAAC,GAAC,CAAC,CAAC,IAAI,WAAQ,EAAE,GAAG,CAAC,CAAC;oBACtI,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA,wBAAwB;QAE7C,qCAAqC;QACrC,IAAI,IAAI,CAAC,OAAO,KAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAA,EAAE,CAAC;YAC1C,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAEpC,IAAI,GAAG,GAAG,EAAE,CAAC;gBACb,KAAkB,UAAsB,EAAtB,KAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAtB,cAAsB,EAAtB,IAAsB,EAAE,CAAC;oBAAtC,IAAI,KAAK,SAAA;oBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAG,KAAK,CAAE,CAAC,EAAE,CAAC;wBACzC,GAAG,CAAC,UAAG,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,eAAe,IAAI,CAAC,CAAC;oBACzB,CAAC;;wBACI,SAAS;gBAClB,CAAC;gBACD,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;oBACxC,MAAM,IAAI,uBAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,IAAI,GAAG,GAAG,EAAE,CAAC;gBACb,KAAkB,UAAsB,EAAtB,KAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAtB,cAAsB,EAAtB,IAAsB,EAAE,CAAC;oBAAtC,IAAI,KAAK,SAAA;oBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAG,KAAK,CAAE,CAAC,EAAE,CAAC;wBACzC,GAAG,CAAC,UAAG,KAAK,CAAE,CAAC,GAAG,CAAC,CAAC;wBACpB,eAAe,IAAI,CAAC,CAAC;oBACzB,CAAC;;wBACI,SAAS;gBAClB,CAAC;gBACD,IAAI,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;oBACxC,MAAM,IAAI,uBAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;gBAC1D,MAAM,IAAI,uBAAa,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IACL,yBAAC;AAAD,CAAC,AAnKD,IAmKC;AAED,kBAAe,kBAAkB,CAAC"}
|