@uxf/core 4.2.0 → 4.4.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/package.json +1 -1
- package/utils/copy-to-clipboard.d.ts +1 -0
- package/utils/copy-to-clipboard.js +86 -0
- package/utils/file.d.ts +8 -0
- package/utils/file.js +12 -0
- package/utils/image.d.ts +20 -0
- package/utils/image.js +117 -0
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function copyToClipboard(text: string): Promise<boolean>;
|
|
@@ -0,0 +1,86 @@
|
|
|
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());
|
|
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 (_) 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 };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.copyToClipboard = void 0;
|
|
40
|
+
function copyToClipboardFallback(text) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
+
var textArea;
|
|
43
|
+
return __generator(this, function (_a) {
|
|
44
|
+
textArea = document.createElement("textarea");
|
|
45
|
+
textArea.value = text;
|
|
46
|
+
// Avoid scrolling to bottom
|
|
47
|
+
textArea.style.top = "0";
|
|
48
|
+
textArea.style.left = "0";
|
|
49
|
+
textArea.style.position = "fixed";
|
|
50
|
+
document.body.appendChild(textArea);
|
|
51
|
+
textArea.focus();
|
|
52
|
+
textArea.select();
|
|
53
|
+
document.execCommand("copy");
|
|
54
|
+
document.body.removeChild(textArea);
|
|
55
|
+
return [2 /*return*/];
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function copyToClipboard(text) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
61
|
+
var copyFunction, e_1;
|
|
62
|
+
return __generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
copyFunction = typeof navigator.clipboard.writeText !== "function"
|
|
66
|
+
? copyToClipboardFallback
|
|
67
|
+
: navigator.clipboard.writeText;
|
|
68
|
+
_a.label = 1;
|
|
69
|
+
case 1:
|
|
70
|
+
_a.trys.push([1, 3, , 4]);
|
|
71
|
+
return [4 /*yield*/, copyFunction(text)];
|
|
72
|
+
case 2:
|
|
73
|
+
_a.sent();
|
|
74
|
+
return [2 /*return*/, true];
|
|
75
|
+
case 3:
|
|
76
|
+
e_1 = _a.sent();
|
|
77
|
+
// eslint-disable-next-line
|
|
78
|
+
console.error(e_1);
|
|
79
|
+
return [2 /*return*/, false];
|
|
80
|
+
case 4: return [2 /*return*/];
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
exports.copyToClipboard = copyToClipboard;
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS10by1jbGlwYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29weS10by1jbGlwYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBZSx1QkFBdUIsQ0FBQyxJQUFZOzs7O1lBQ3pDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBRXRCLDRCQUE0QjtZQUM1QixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDekIsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUVsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVwQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRWxCLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7Q0FDdkM7QUFFRCxTQUFzQixlQUFlLENBQUMsSUFBWTs7Ozs7O29CQUN4QyxZQUFZLEdBQ2QsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxVQUFVO3dCQUMvQyxDQUFDLENBQUMsdUJBQXVCO3dCQUN6QixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7Ozs7b0JBR3BDLHFCQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQTs7b0JBQXhCLFNBQXdCLENBQUM7b0JBQ3pCLHNCQUFPLElBQUksRUFBQzs7O29CQUVaLDJCQUEyQjtvQkFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFDLENBQUMsQ0FBQztvQkFDakIsc0JBQU8sS0FBSyxFQUFDOzs7OztDQUVwQjtBQWRELDBDQWNDIn0=
|
package/utils/file.d.ts
ADDED
package/utils/file.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFileUrl = void 0;
|
|
4
|
+
function getFileUrl(file) {
|
|
5
|
+
var ch1 = file.uuid.charAt(0);
|
|
6
|
+
var ch2 = file.uuid.charAt(1);
|
|
7
|
+
return file.namespace
|
|
8
|
+
? "/upload/".concat(file.namespace, "/").concat(ch1, "/").concat(ch2, "/").concat(file.uuid, ".").concat(file.extension)
|
|
9
|
+
: "/upload/".concat(ch1, "/").concat(ch2, "/").concat(file.uuid, ".").concat(file.extension);
|
|
10
|
+
}
|
|
11
|
+
exports.getFileUrl = getFileUrl;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLFNBQWdCLFVBQVUsQ0FBQyxJQUFrQztJQUN6RCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoQyxPQUFPLElBQUksQ0FBQyxTQUFTO1FBQ2pCLENBQUMsQ0FBQyxrQkFBVyxJQUFJLENBQUMsU0FBUyxjQUFJLEdBQUcsY0FBSSxHQUFHLGNBQUksSUFBSSxDQUFDLElBQUksY0FBSSxJQUFJLENBQUMsU0FBUyxDQUFFO1FBQzFFLENBQUMsQ0FBQyxrQkFBVyxHQUFHLGNBQUksR0FBRyxjQUFJLElBQUksQ0FBQyxJQUFJLGNBQUksSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDO0FBQ2pFLENBQUM7QUFQRCxnQ0FPQyJ9
|
package/utils/image.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ImageSource, ResizerImageProps } from "./resizer";
|
|
2
|
+
import { FC } from "react";
|
|
3
|
+
export declare type Dimension = number | "auto";
|
|
4
|
+
export declare type Format = "avif" | "webp" | "original";
|
|
5
|
+
export declare type Quality = number | Record<Format, number>;
|
|
6
|
+
export declare function getSvgImgUrl(src: ImageSource): string | undefined;
|
|
7
|
+
export declare function getImgQuality(quality: Quality | undefined, format: Format): number | undefined;
|
|
8
|
+
export declare function getImgUniqueIdentifier(src: ImageSource): string | undefined;
|
|
9
|
+
export declare function getImgSrcSet(src?: ImageSource, width?: Dimension, height?: Dimension, options?: ResizerImageProps): string | undefined;
|
|
10
|
+
interface ImageSourcesProps {
|
|
11
|
+
breakpointIndex?: number;
|
|
12
|
+
breakpoints?: string[];
|
|
13
|
+
height: Dimension;
|
|
14
|
+
options?: Omit<ResizerImageProps, "quality" | "toFormat">;
|
|
15
|
+
quality?: Quality;
|
|
16
|
+
src: ImageSource;
|
|
17
|
+
width: Dimension;
|
|
18
|
+
}
|
|
19
|
+
export declare const ImgSources: FC<ImageSourcesProps>;
|
|
20
|
+
export {};
|
package/utils/image.js
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ImgSources = exports.getImgSrcSet = exports.getImgUniqueIdentifier = exports.getImgQuality = exports.getSvgImgUrl = void 0;
|
|
18
|
+
var file_1 = require("./file");
|
|
19
|
+
var resizer_1 = require("./resizer");
|
|
20
|
+
var react_1 = __importDefault(require("react"));
|
|
21
|
+
function toImageResponse(src) {
|
|
22
|
+
return typeof src !== "string" && "uuid" in src ? src : undefined;
|
|
23
|
+
}
|
|
24
|
+
function toStaticImageData(src) {
|
|
25
|
+
return typeof src !== "string" && "src" in src ? src : undefined;
|
|
26
|
+
}
|
|
27
|
+
function parseImgExtension(src) {
|
|
28
|
+
var ext = src.slice(src.lastIndexOf(".") + 1);
|
|
29
|
+
return ext.length > 1 ? ext : undefined;
|
|
30
|
+
}
|
|
31
|
+
function getSvgImgUrl(src) {
|
|
32
|
+
if (typeof src === "string" && parseImgExtension(src) === "svg") {
|
|
33
|
+
return src;
|
|
34
|
+
}
|
|
35
|
+
var imageResponse = toImageResponse(src);
|
|
36
|
+
if (imageResponse && parseImgExtension(imageResponse.extension) === "svg") {
|
|
37
|
+
return (0, file_1.getFileUrl)(imageResponse);
|
|
38
|
+
}
|
|
39
|
+
var staticImageData = toStaticImageData(src);
|
|
40
|
+
if (staticImageData && parseImgExtension(staticImageData.src) === "svg") {
|
|
41
|
+
return staticImageData.src;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
exports.getSvgImgUrl = getSvgImgUrl;
|
|
46
|
+
function getImgQuality(quality, format) {
|
|
47
|
+
return typeof quality === "number" ? quality : quality ? quality[format] : undefined;
|
|
48
|
+
}
|
|
49
|
+
exports.getImgQuality = getImgQuality;
|
|
50
|
+
function getImgUniqueIdentifier(src) {
|
|
51
|
+
var _a, _b, _c;
|
|
52
|
+
return typeof src === "string" ? src : (_b = (_a = toImageResponse(src)) === null || _a === void 0 ? void 0 : _a.uuid) !== null && _b !== void 0 ? _b : (_c = toStaticImageData(src)) === null || _c === void 0 ? void 0 : _c.src;
|
|
53
|
+
}
|
|
54
|
+
exports.getImgUniqueIdentifier = getImgUniqueIdentifier;
|
|
55
|
+
var HIDPI_SIZES = [3, 2, 1];
|
|
56
|
+
function getImgSrcSet(src, width, height, options) {
|
|
57
|
+
var _a, _b;
|
|
58
|
+
if (options === void 0) { options = {}; }
|
|
59
|
+
if (!src) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
var toFormat;
|
|
63
|
+
var h = height !== null && height !== void 0 ? height : "auto";
|
|
64
|
+
var w = width !== null && width !== void 0 ? width : "auto";
|
|
65
|
+
if (typeof src === "string") {
|
|
66
|
+
toFormat = parseImgExtension(src);
|
|
67
|
+
}
|
|
68
|
+
var imageResponse = toImageResponse(src);
|
|
69
|
+
if (imageResponse) {
|
|
70
|
+
if (!imageResponse.uuid) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
toFormat = parseImgExtension(imageResponse.extension);
|
|
74
|
+
h = (_a = (h || imageResponse.height)) !== null && _a !== void 0 ? _a : "auto";
|
|
75
|
+
w = (_b = (w || imageResponse.width)) !== null && _b !== void 0 ? _b : "auto";
|
|
76
|
+
}
|
|
77
|
+
var staticImageData = toStaticImageData(src);
|
|
78
|
+
if (staticImageData) {
|
|
79
|
+
if (!staticImageData.src) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
toFormat = parseImgExtension(staticImageData.src);
|
|
83
|
+
h = h || staticImageData.height;
|
|
84
|
+
w = w || staticImageData.width;
|
|
85
|
+
}
|
|
86
|
+
if (typeof h === "number" || typeof w === "number") {
|
|
87
|
+
return HIDPI_SIZES.map(function (size) {
|
|
88
|
+
return (0, resizer_1.resizerImageUrl)(src, w * size, h * size, __assign({ toFormat: toFormat }, options)) + (size > 1 ? " ".concat(size, "x") : "");
|
|
89
|
+
}).join(", ");
|
|
90
|
+
}
|
|
91
|
+
return (0, resizer_1.resizerImageUrl)(src, w, h, __assign({ toFormat: toFormat }, options));
|
|
92
|
+
}
|
|
93
|
+
exports.getImgSrcSet = getImgSrcSet;
|
|
94
|
+
var ImgSources = function (props) {
|
|
95
|
+
var _a, _b, _c;
|
|
96
|
+
if (!props.src) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
var imageResponse = toImageResponse(props.src);
|
|
100
|
+
if (imageResponse && !imageResponse.uuid) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
var staticImageData = toStaticImageData(props.src);
|
|
104
|
+
if (staticImageData && !staticImageData.src) {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
var media;
|
|
108
|
+
if (props.breakpoints && props.breakpointIndex) {
|
|
109
|
+
media = "(min-width: ".concat(props.breakpoints[props.breakpointIndex], ")");
|
|
110
|
+
}
|
|
111
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
112
|
+
react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_a = props.options) !== null && _a !== void 0 ? _a : {})), { quality: getImgQuality(props.quality, "avif"), toFormat: "avif" })), type: "image/avif" }),
|
|
113
|
+
react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_b = props.options) !== null && _b !== void 0 ? _b : {})), { quality: getImgQuality(props.quality, "webp"), toFormat: "webp" })), type: "image/webp" }),
|
|
114
|
+
react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_c = props.options) !== null && _c !== void 0 ? _c : {})), { quality: getImgQuality(props.quality, "original") })) })));
|
|
115
|
+
};
|
|
116
|
+
exports.ImgSources = ImgSources;
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW1hZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQW9DO0FBQ3BDLHFDQUE0RztBQUM1RyxnREFBa0M7QUFNbEMsU0FBUyxlQUFlLENBQUMsR0FBUTtJQUM3QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxHQUFRO0lBQy9CLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEdBQVc7SUFDbEMsSUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWhELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsR0FBZ0I7SUFDekMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzdELE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFFRCxJQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFM0MsSUFBSSxhQUFhLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN2RSxPQUFPLElBQUEsaUJBQVUsRUFBQyxhQUFhLENBQUMsQ0FBQztLQUNwQztJQUVELElBQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRS9DLElBQUksZUFBZSxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDckUsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDO0tBQzlCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQWxCRCxvQ0FrQkM7QUFFRCxTQUFnQixhQUFhLENBQUMsT0FBNEIsRUFBRSxNQUFjO0lBQ3RFLE9BQU8sT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsR0FBZ0I7O0lBQ25ELE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQUEsTUFBQSxlQUFlLENBQUMsR0FBRyxDQUFDLDBDQUFFLElBQUksbUNBQUksTUFBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsMENBQUUsR0FBRyxDQUFDO0FBQ3JHLENBQUM7QUFGRCx3REFFQztBQUVELElBQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUU5QixTQUFnQixZQUFZLENBQ3hCLEdBQWlCLEVBQ2pCLEtBQWlCLEVBQ2pCLE1BQWtCLEVBQ2xCLE9BQStCOztJQUEvQix3QkFBQSxFQUFBLFlBQStCO0lBRS9CLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDTixPQUFPLFNBQVMsQ0FBQztLQUNwQjtJQUVELElBQUksUUFBNEIsQ0FBQztJQUNqQyxJQUFJLENBQUMsR0FBYyxNQUFNLGFBQU4sTUFBTSxjQUFOLE1BQU0sR0FBSSxNQUFNLENBQUM7SUFDcEMsSUFBSSxDQUFDLEdBQWMsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksTUFBTSxDQUFDO0lBRW5DLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQ3pCLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQztJQUVELElBQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQyxJQUFJLGFBQWEsRUFBRTtRQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsUUFBUSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RCxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLG1DQUFJLE1BQU0sQ0FBQztRQUMxQyxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLG1DQUFJLE1BQU0sQ0FBQztLQUM1QztJQUVELElBQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRS9DLElBQUksZUFBZSxFQUFFO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3RCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsUUFBUSxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsRCxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFDaEMsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDO0tBQ2xDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO1FBQ2hELE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FDbEIsVUFBQSxJQUFJO1lBQ0EsT0FBQSxJQUFBLHlCQUFlLEVBQUMsR0FBRyxFQUFHLENBQVksR0FBRyxJQUFJLEVBQUcsQ0FBWSxHQUFHLElBQUksYUFDM0QsUUFBUSxVQUFBLElBQ0wsT0FBTyxFQUNaLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFJLElBQUksTUFBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFIbEMsQ0FHa0MsQ0FDekMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEI7SUFFRCxPQUFPLElBQUEseUJBQWUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBSSxRQUFRLFVBQUEsSUFBSyxPQUFPLEVBQUcsQ0FBQztBQUNoRSxDQUFDO0FBckRELG9DQXFEQztBQVlNLElBQU0sVUFBVSxHQUEwQixVQUFBLEtBQUs7O0lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELElBQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakQsSUFBSSxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFFRCxJQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckQsSUFBSSxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFFRCxJQUFJLEtBQXlCLENBQUM7SUFFOUIsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7UUFDNUMsS0FBSyxHQUFHLHNCQUFlLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFHLENBQUM7S0FDdEU7SUFFRCxPQUFPLENBQ0g7UUFDSSwwQ0FDSSxLQUFLLEVBQUUsS0FBSyxFQUNaLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLHdCQUNsRCxDQUFDLE1BQUEsS0FBSyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDLEtBQ3hCLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDN0MsUUFBUSxFQUFFLE1BQU0sSUFDbEIsRUFDRixJQUFJLEVBQUMsWUFBWSxHQUNuQjtRQUNGLDBDQUNJLEtBQUssRUFBRSxLQUFLLEVBQ1osTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sd0JBQ2xELENBQUMsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUMsS0FDeEIsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUM3QyxRQUFRLEVBQUUsTUFBTSxJQUNsQixFQUNGLElBQUksRUFBQyxZQUFZLEdBQ25CO1FBQ0YsMENBQ0ksS0FBSyxFQUFFLEtBQUssRUFDWixNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSx3QkFDbEQsQ0FBQyxNQUFBLEtBQUssQ0FBQyxPQUFPLG1DQUFJLEVBQUUsQ0FBQyxLQUN4QixPQUFPLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQ25ELEdBQ0osQ0FDSCxDQUNOLENBQUM7QUFDTixDQUFDLENBQUM7QUFwRFcsUUFBQSxVQUFVLGNBb0RyQiJ9
|