@kaspernj/api-maker 1.0.2113 → 1.0.2115
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/build/collection-loader.js +6 -5
- package/build/collection.d.ts +8 -4
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +5 -3
- package/build/form.d.ts.map +1 -1
- package/build/form.js +5 -3
- package/build/router/route.d.ts.map +1 -1
- package/build/router/route.js +50 -9
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +3 -3
- package/build/super-admin/edit-page/edit-attribute-content.js +3 -3
- package/build/super-admin/edit-page/edit-attribute-input.js +3 -3
- package/build/super-admin/edit-page.js +14 -14
- package/build/super-admin/index.js +47 -24
- package/build/table/table-settings.d.ts.map +1 -1
- package/build/table/table-settings.js +7 -1
- package/build/table/table.js +47 -21
- package/build/table/widths.d.ts +3 -0
- package/build/table/widths.d.ts.map +1 -1
- package/build/table/widths.js +33 -18
- package/build/use-can-can.d.ts.map +1 -1
- package/build/use-can-can.js +18 -2
- package/build/use-collection.d.ts +33 -30
- package/build/use-collection.d.ts.map +1 -1
- package/build/use-collection.js +45 -23
- package/build/use-current-user-context.d.ts.map +1 -1
- package/build/use-current-user-context.js +13 -4
- package/build/use-input.js +2 -2
- package/build/use-model-event.js +2 -2
- package/build/use-model.d.ts.map +1 -1
- package/build/use-model.js +24 -12
- package/build/use-resize-observer.js +2 -2
- package/build/use-router.js +2 -2
- package/build/use-shape.d.ts +2 -0
- package/build/use-shape.d.ts.map +1 -0
- package/build/use-shape.js +2 -0
- package/build/use-updated-event.js +2 -2
- package/build/use-validation-errors.js +2 -2
- package/package.json +2 -2
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import Collection from "./collection.js";
|
|
2
2
|
import { digg } from "diggerize";
|
|
3
3
|
import memo from "set-state-compare/build/memo.js";
|
|
4
|
-
import {
|
|
4
|
+
import { useEffect } from "react";
|
|
5
5
|
import PropTypes from "prop-types"; // eslint-disable-line sort-imports
|
|
6
6
|
import propTypesExact from "prop-types-exact";
|
|
7
7
|
import useCollection from "./use-collection.js";
|
|
8
|
-
import useShape from "
|
|
8
|
+
import useShape from "./use-shape.js";
|
|
9
9
|
function CollectionLoader({ component, ...restProps }) {
|
|
10
10
|
const s = useShape(restProps);
|
|
11
|
-
const useCollectionResult = useCollection(restProps);
|
|
11
|
+
const useCollectionResult = useCollection(/** @type {Parameters<typeof useCollection>[0]} */ (restProps));
|
|
12
12
|
const cachePartsKeys = [
|
|
13
13
|
"modelIdsCacheString",
|
|
14
14
|
"overallCount",
|
|
@@ -27,7 +27,8 @@ function CollectionLoader({ component, ...restProps }) {
|
|
|
27
27
|
cacheParts.push(digg(useCollectionResult, cachePartsKey));
|
|
28
28
|
}
|
|
29
29
|
s.updateMeta({ component, useCollectionResult });
|
|
30
|
-
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
// Mirror collection results into the host component after commit so async loads never update an unmounted render path.
|
|
31
32
|
s.m.component.setState(s.m.useCollectionResult);
|
|
32
33
|
}, cacheParts);
|
|
33
34
|
return null;
|
|
@@ -51,4 +52,4 @@ CollectionLoader.propTypes = propTypesExact({
|
|
|
51
52
|
selectColumns: PropTypes.object
|
|
52
53
|
});
|
|
53
54
|
export default memo(CollectionLoader);
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbGxlY3Rpb24tbG9hZGVyLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDL0IsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBLENBQUMsbUNBQW1DO0FBQ3RFLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDLFNBQVMsZ0JBQWdCLENBQUMsRUFBQyxTQUFTLEVBQUUsR0FBRyxTQUFTLEVBQUM7SUFDakQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQzdCLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLGtEQUFrRCxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUN6RyxNQUFNLGNBQWMsR0FBRztRQUNyQixxQkFBcUI7UUFDckIsY0FBYztRQUNkLFNBQVM7UUFDVCxXQUFXO1FBQ1gsYUFBYTtRQUNiLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGNBQWM7UUFDZCwrQkFBK0I7UUFDL0IsMkJBQTJCO0tBQzVCLENBQUE7SUFDRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUE7SUFFckIsS0FBSSxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUMxQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO0lBQzNELENBQUM7SUFFRCxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFDLENBQUMsQ0FBQTtJQUU5QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsdUhBQXVIO1FBQ3ZILENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDakQsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRWQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztJQUMxQyxTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDM0IsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzVDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7SUFDdEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQy9CLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSztJQUN4QixVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0lBQ3JDLHlCQUF5QixFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQ3pDLHFCQUFxQixFQUFFLFNBQVMsQ0FBQyxJQUFJO0lBQ3JDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUk7SUFDMUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLO0lBQ3pCLFdBQVcsRUFBRSxTQUFTLENBQUMsSUFBSTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDM0IsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0lBQ3pCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN4QixhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU07Q0FDaEMsQ0FBQyxDQUFBO0FBRUYsZUFBZSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuL2NvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHVzZUNvbGxlY3Rpb24gZnJvbSBcIi4vdXNlLWNvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCIuL3VzZS1zaGFwZS5qc1wiXG5cbmZ1bmN0aW9uIENvbGxlY3Rpb25Mb2FkZXIoe2NvbXBvbmVudCwgLi4ucmVzdFByb3BzfSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtc3R5bGVcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHJlc3RQcm9wcylcbiAgY29uc3QgdXNlQ29sbGVjdGlvblJlc3VsdCA9IHVzZUNvbGxlY3Rpb24oLyoqIEB0eXBlIHtQYXJhbWV0ZXJzPHR5cGVvZiB1c2VDb2xsZWN0aW9uPlswXX0gKi8gKHJlc3RQcm9wcykpXG4gIGNvbnN0IGNhY2hlUGFydHNLZXlzID0gW1xuICAgIFwibW9kZWxJZHNDYWNoZVN0cmluZ1wiLFxuICAgIFwib3ZlcmFsbENvdW50XCIsXG4gICAgXCJxUGFyYW1zXCIsXG4gICAgXCJxdWVyeU5hbWVcIixcbiAgICBcInF1ZXJ5UGVyS2V5XCIsXG4gICAgXCJxdWVyeVFOYW1lXCIsXG4gICAgXCJxdWVyeVNOYW1lXCIsXG4gICAgXCJxdWVyeVBhZ2VOYW1lXCIsXG4gICAgXCJzZWFyY2hQYXJhbXNcIixcbiAgICBcInNob3dOb1JlY29yZHNBdmFpbGFibGVDb250ZW50XCIsXG4gICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgXVxuICBjb25zdCBjYWNoZVBhcnRzID0gW11cblxuICBmb3IoY29uc3QgY2FjaGVQYXJ0c0tleSBvZiBjYWNoZVBhcnRzS2V5cykge1xuICAgIGNhY2hlUGFydHMucHVzaChkaWdnKHVzZUNvbGxlY3Rpb25SZXN1bHQsIGNhY2hlUGFydHNLZXkpKVxuICB9XG5cbiAgcy51cGRhdGVNZXRhKHtjb21wb25lbnQsIHVzZUNvbGxlY3Rpb25SZXN1bHR9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gTWlycm9yIGNvbGxlY3Rpb24gcmVzdWx0cyBpbnRvIHRoZSBob3N0IGNvbXBvbmVudCBhZnRlciBjb21taXQgc28gYXN5bmMgbG9hZHMgbmV2ZXIgdXBkYXRlIGFuIHVubW91bnRlZCByZW5kZXIgcGF0aC5cbiAgICBzLm0uY29tcG9uZW50LnNldFN0YXRlKHMubS51c2VDb2xsZWN0aW9uUmVzdWx0KVxuICB9LCBjYWNoZVBhcnRzKVxuXG4gIHJldHVybiBudWxsXG59XG5cbkNvbGxlY3Rpb25Mb2FkZXIucHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICBhYmlsaXRpZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNvbGxlY3Rpb246IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbGxlY3Rpb24pLFxuICBjb21wb25lbnQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZGVmYXVsdFBhcmFtczogUHJvcFR5cGVzLm9iamVjdCxcbiAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Nb2RlbHNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICBwYWdpbmF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgcHJlbG9hZHM6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJhbnNhY2s6IFByb3BUeXBlcy5vYmplY3QsXG4gIHNlbGVjdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdFxufSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhDb2xsZWN0aW9uTG9hZGVyKVxuIl19
|
package/build/collection.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* @template {typeof import("./base-model.js").default} MC
|
|
3
3
|
* @typedef {InstanceType<MC>} ModelOf
|
|
4
4
|
*/
|
|
5
|
+
/** @typedef {Record<string, any>} PreloadMap */
|
|
6
|
+
/** @typedef {string | Array<string | PreloadMap> | PreloadMap} PreloadValue */
|
|
5
7
|
/**
|
|
6
8
|
* @template {typeof import("./base-model.js").default} MC
|
|
7
9
|
* @typedef {object} CollectionArgsType
|
|
@@ -22,7 +24,7 @@
|
|
|
22
24
|
* @property {Record<string, any>} [params]
|
|
23
25
|
* @property {number} [per]
|
|
24
26
|
* @property {string} [perKey]
|
|
25
|
-
* @property {
|
|
27
|
+
* @property {PreloadValue} [preload]
|
|
26
28
|
* @property {Record<string, any>} [ransack]
|
|
27
29
|
* @property {Record<string, any>} [search]
|
|
28
30
|
* @property {string} [searchKey]
|
|
@@ -111,10 +113,10 @@ export default class ApiMakerCollection<MC extends typeof import("./base-model.j
|
|
|
111
113
|
*/
|
|
112
114
|
map(callback: (arg0: import("./base-model.js").default) => void): any[];
|
|
113
115
|
/**
|
|
114
|
-
* @param {
|
|
116
|
+
* @param {PreloadValue} preloadValue
|
|
115
117
|
* @returns {this}
|
|
116
118
|
*/
|
|
117
|
-
preload(preloadValue:
|
|
119
|
+
preload(preloadValue: PreloadValue): this;
|
|
118
120
|
/**
|
|
119
121
|
* @param {number} page
|
|
120
122
|
* @returns {this}
|
|
@@ -193,6 +195,8 @@ export default class ApiMakerCollection<MC extends typeof import("./base-model.j
|
|
|
193
195
|
}>;
|
|
194
196
|
}
|
|
195
197
|
export type ModelOf<MC extends typeof import("./base-model.js").default> = InstanceType<MC>;
|
|
198
|
+
export type PreloadMap = Record<string, any>;
|
|
199
|
+
export type PreloadValue = string | Array<string | PreloadMap> | PreloadMap;
|
|
196
200
|
export type CollectionArgsType<MC extends typeof import("./base-model.js").default> = {
|
|
197
201
|
model?: import("./base-model.js").default;
|
|
198
202
|
modelClass: MC;
|
|
@@ -210,7 +214,7 @@ export type QueryArgsType = {
|
|
|
210
214
|
params?: Record<string, any>;
|
|
211
215
|
per?: number;
|
|
212
216
|
perKey?: string;
|
|
213
|
-
preload?:
|
|
217
|
+
preload?: PreloadValue;
|
|
214
218
|
ransack?: Record<string, any>;
|
|
215
219
|
search?: Record<string, any>;
|
|
216
220
|
searchKey?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"/src/","sources":["collection.js"],"names":[],"mappings":"AAQA;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,8DAA8D;AAC9D,wCADyD,EAAE,SAA7C,cAAe,iBAAiB,EAAE,OAAQ;IAEtD,4BAAkC;IAElC;;;OAGG;IACH,kBAHW,kBAAkB,CAAC,EAAE,CAAC,cACtB,aAAa,EAOvB;IAFC,yBAA0B;IAC1B,6BAAgB;IAGlB;;;OAGG;IACH,6BAHW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtB,IAAI,CAmBhB;IAED;;;OAGG;IACH,0BAHW,MAAM,GACJ,IAAI,CAIhB;IAED,iCAAiC;IACjC,SADc,OAAO,CAAC,MAAM,CAAC,CAO5B;IAED,sBAAsB;IACtB,YADc,IAAI,CAGjB;IAED;;;OAGG;IACH,eAHW,CAAS,IAAiC,EAAjC,OAAO,iBAAiB,EAAE,OAAO,KAAI,IAAI,GAChD,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;OAGG;IACH,gBAHc,MAAM,EAAA,GACP,IAAI,CAYhB;IAED,sCAAsC;IACtC,SADc,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAIjC;IAED;;;OAGG;IACH,oCAHc,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAA,GAC5B,IAAI,CAmBhB;IAED,kEAAkE;IAClE,gBADc,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAS7D;IAED,yBAAyB;IACzB,YADc,OAAO,CAWpB;IAED;;;OAGG;IACH,cAHW,MAAM,GACJ,IAAI,CAIhB;IAED,oCAAoC;IACpC,aADc,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAO/B;IAED,kDAAkD;IAClD,UADc,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAoB7C;IAED,oCAAoC;IACpC,eADc,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAS/B;IAGD;;;OAGG;IACH,mBAHW,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAChB,IAAI,CAIhB;IAGD;;;OAGG;IACH,eAHW,OAAO,CAAC,EAAE,CAAC,GACT,IAAI,CAYhB;IAGD;;;OAGG;IACH,eAHW,CAAS,IAAiC,EAAjC,OAAO,iBAAiB,EAAE,OAAO,KAAG,OAAO,GAClD,OAAO,iBAAiB,EAAE,OAAO,CAEa;IAE3D;;;OAGG;IACH,kBAHW,CAAS,IAAiC,EAAjC,OAAO,iBAAiB,EAAE,OAAO,KAAG,IAAI,GAC/C,IAAI,CAEgD;IAEjE;;;OAGG;IACH,cAHW,CAAS,IAAiC,EAAjC,OAAO,iBAAiB,EAAE,OAAO,KAAG,IAAI,GAC/C,GAAG,EAAE,CAEuC;IAEzD;;;OAGG;IACH,sBAHW,
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"/src/","sources":["collection.js"],"names":[],"mappings":"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"}
|
package/build/collection.js
CHANGED
|
@@ -9,6 +9,8 @@ import uniqunize from "uniqunize";
|
|
|
9
9
|
* @template {typeof import("./base-model.js").default} MC
|
|
10
10
|
* @typedef {InstanceType<MC>} ModelOf
|
|
11
11
|
*/
|
|
12
|
+
/** @typedef {Record<string, any>} PreloadMap */
|
|
13
|
+
/** @typedef {string | Array<string | PreloadMap> | PreloadMap} PreloadValue */
|
|
12
14
|
/**
|
|
13
15
|
* @template {typeof import("./base-model.js").default} MC
|
|
14
16
|
* @typedef {object} CollectionArgsType
|
|
@@ -29,7 +31,7 @@ import uniqunize from "uniqunize";
|
|
|
29
31
|
* @property {Record<string, any>} [params]
|
|
30
32
|
* @property {number} [per]
|
|
31
33
|
* @property {string} [perKey]
|
|
32
|
-
* @property {
|
|
34
|
+
* @property {PreloadValue} [preload]
|
|
33
35
|
* @property {Record<string, any>} [ransack]
|
|
34
36
|
* @property {Record<string, any>} [search]
|
|
35
37
|
* @property {string} [searchKey]
|
|
@@ -237,7 +239,7 @@ export default class ApiMakerCollection {
|
|
|
237
239
|
*/
|
|
238
240
|
map(callback) { return this.loadedArray().map(callback); }
|
|
239
241
|
/**
|
|
240
|
-
* @param {
|
|
242
|
+
* @param {PreloadValue} preloadValue
|
|
241
243
|
* @returns {this}
|
|
242
244
|
*/
|
|
243
245
|
preload(preloadValue) {
|
|
@@ -450,4 +452,4 @@ export default class ApiMakerCollection {
|
|
|
450
452
|
}, {});
|
|
451
453
|
}
|
|
452
454
|
}
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY29sbGVjdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUEsQ0FBQyxtQ0FBbUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQSxDQUFDLG1DQUFtQztBQUM1RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQSxDQUFDLG1DQUFtQztBQUNwRSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFFakM7OztHQUdHO0FBRUg7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFDckMsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7SUFFbEM7OztPQUdHO0lBQ0gsWUFBWSxJQUFJLEVBQUUsU0FBUyxHQUFHLEVBQUU7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRS9GLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsaUJBQWlCO1FBQ3pCLE1BQU0sWUFBWSxHQUFHLHVDQUF1QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFakUsS0FBSyxNQUFNLG1CQUFtQixJ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QUM7SUFFRCwyREFBMkQ7SUFDM0QsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQTtRQUUzSixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUU1RCxPQUFPLFlBQVksQ0FBQyxVQUFVLENBQzVCO1lBQ0UsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsY0FBYyxDQUFDLGNBQWMsUUFBUTtZQUNqRCxjQUFjLEVBQUUsY0FBYyxDQUFDLGNBQWM7WUFDN0MsSUFBSSxFQUFFLE9BQU87U0FDZCxFQUNELEVBQUUsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZURlZXAgZnJvbSBcImNsb25lLWRlZXBcIlxuaW1wb3J0IENvbW1hbmRzUG9vbCBmcm9tIFwiLi9jb21tYW5kcy1wb29sLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0IFJlc3VsdCBmcm9tIFwiLi9yZXN1bHQuanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtJbnN0YW5jZVR5cGU8TUM+fSBNb2RlbE9mXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge3R5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gTUNcbiAqIEB0eXBlZGVmIHtvYmplY3R9IENvbGxlY3Rpb25BcmdzVHlwZVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gW21vZGVsXVxuICogQHByb3BlcnR5IHtNQ30gbW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZWZsZWN0aW9uTmFtZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFF1ZXJ5QXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYWJpbGl0aWVzXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthY2Nlc3NpYmxlQnldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjb3VudF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Rpc3RpbmN0XVxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddPn0gW2dyb3VwQnldXG4gKiBAcHJvcGVydHkge251bWJlcn0gW2xpbWl0XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwYWdlXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYWdlS2V5XVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcGFyYW1zXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwZXJdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BlcktleV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwcmVsb2FkXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcmFuc2Fja11cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW3NlYXJjaF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2VhcmNoS2V5XVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cblxuLyoqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBNQyAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb2xsZWN0aW9uIHtcbiAgc3RhdGljIGFwaU1ha2VyVHlwZSA9IFwiQ29sbGVjdGlvblwiXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvbkFyZ3NUeXBlPE1DPn0gYXJnc1xuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IHF1ZXJ5QXJnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncywgcXVlcnlBcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzIGdpdmVuIGluICR7T2JqZWN0LmtleXMoYXJncykuam9pbihcIiwgXCIpfWApXG5cbiAgICB0aGlzLnF1ZXJ5QXJncyA9IHF1ZXJ5QXJnc1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gb3JpZ2luYWxBYmlsaXRpZXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBhYmlsaXRpZXMob3JpZ2luYWxBYmlsaXRpZXMpIHtcbiAgICBjb25zdCBuZXdBYmlsaXRpZXMgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbEFiaWxpdHlOYW1lIGluIG9yaWdpbmFsQWJpbGl0aWVzKSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxBYmlsaXR5TmFtZSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsQWJpbGl0aWVzW29yaWdpbmFsQWJpbGl0eU5hbWVdXG5cbiAgICAgIGZvciAoY29uc3Qgb3JpZ2luYWxBYmlsaXR5TmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBYmlsaXR5TmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEFiaWxpdHlOYW1lKVxuICAgICAgICBuZXdWYWx1ZXMucHVzaChuZXdBYmlsaXR5TmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3QWJpbGl0aWVzW25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2FiaWxpdGllczogbmV3QWJpbGl0aWVzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWJpbGl0eU5hbWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBhY2Nlc3NpYmxlQnkoYWJpbGl0eU5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2FjY2Vzc2libGVCeTogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGFiaWxpdHlOYW1lKX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gKi9cbiAgYXN5bmMgY291bnQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsb25lKClcbiAgICAgIC5fbWVyZ2Uoe2NvdW50OiB0cnVlfSlcbiAgICAgIC5fcmVzcG9uc2UoKVxuXG4gICAgcmV0dXJuIGRpZ2cocmVzcG9uc2UsIFwiY291bnRcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dGhpc30gKi9cbiAgZGlzdGluY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtkaXN0aW5jdDogdHJ1ZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCkgOiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGVhY2goY2FsbGJhY2spIHtcbiAgICBjb25zdCBhcnJheSA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIGluIGFycmF5KSB7XG4gICAgICBjYWxsYmFjay5jYWxsKG1vZGVsKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30ga2V5c1xuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGV4Y2VwdCguLi5rZXlzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKGtleSA9PSBcInBhZ2VcIikge1xuICAgICAgICBkZWxldGUgdGhpcy5xdWVyeUFyZ3Nba2V5XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQga2V5OiAke2tleX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8TW9kZWxPZjxNQz4+fSAqL1xuICBhc3luYyBmaXJzdCgpIHtcbiAgICBjb25zdCBtb2RlbHMgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuICAgIHJldHVybiBtb2RlbHNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLihzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddKX0gYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBncm91cEJ5KC4uLmFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zKSB7XG4gICAgY29uc3QgYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNXaXRoTG93ZXJjYXNlQ29sdW1ucyA9IC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT59ICovIChbXSlcblxuICAgIGZvciAoY29uc3QgdGFibGVBbmRDb2x1bW4gb2YgYXJyYXlPZlRhYmxlc0FuZENvbHVtbnMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhYmxlQW5kQ29sdW1uKSkge1xuICAgICAgICBhcnJheU9mVGFibGVzQW5kQ29sdW1uc1dpdGhMb3dlcmNhc2VDb2x1bW5zLnB1c2goW3RhYmxlQW5kQ29sdW1uWzBdLCB0YWJsZUFuZENvbHVtblsxXS50b0xvd2VyQ2FzZSgpXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMucHVzaCh0YWJsZUFuZENvbHVtbi50b0xvd2VyQ2FzZSgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRHcm91cEJ5ID0gdGhpcy5xdWVyeUFyZ3MuZ3JvdXBCeSB8fCBbXVxuICAgIGNvbnN0IG5ld0dyb3VwQnkgPSBjdXJyZW50R3JvdXBCeS5jb25jYXQoYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNXaXRoTG93ZXJjYXNlQ29sdW1ucylcblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7XG4gICAgICBncm91cEJ5OiBuZXdHcm91cEJ5XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbE9mPE1DPiB8IEFycmF5PE1vZGVsT2Y8TUM+PiB8IG51bGw+fSAqL1xuICBhc3luYyBlbnN1cmVMb2FkZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzTG9hZGVkKCkpIHtcbiAgICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICAgIHRoaXMuc2V0KG1vZGVscylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBpc0xvYWRlZCgpIHtcbiAgICBjb25zdCB7bW9kZWwsIHJlZmxlY3Rpb25OYW1lfSA9IHRoaXMuYXJnc1xuXG4gICAgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGxpbWl0KGFtb3VudCkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7bGltaXQ6IGFtb3VudH0pXG4gIH1cblxuICAvKiogQHJldHVybnMge0FycmF5PE1vZGVsT2Y8TUM+Pn0gKi9cbiAgcHJlbG9hZGVkKCkge1xuICAgIGlmICghKHRoaXMuYXJncy5yZWZsZWN0aW9uTmFtZSBpbiB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc0NhY2hlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZX0gaGFzbnQgYmVlbiBsb2FkZWQgeWV0YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVt0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWVdXG4gIH1cblxuICAvKiogQHJldHVybnMge01vZGVsT2Y8TUM+IHwgQXJyYXk8TW9kZWxPZjxNQz4+fSAqL1xuICBsb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKG1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZsZWN0aW9uTmFtZSlcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBhcyBlbXB0eSBhbmQgdHJ5IGFnYWluIHRvIHJldHVybiB0aGUgZW1wdHkgcmVzdWx0XG4gICAgICB0aGlzLnNldChbXSlcblxuICAgICAgcmV0dXJuIGRpZ2cobW9kZWwucmVsYXRpb25zaGlwcywgcmVmbGVjdGlvbk5hbWVVbmRlcnNjb3JlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzTG9hZGVkID0gdW5pcXVuaXplKE9iamVjdC5rZXlzKG1vZGVsLnJlbGF0aW9uc2hpcHMpLmNvbmNhdChPYmplY3Qua2V5cyhtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSlcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlZmxlY3Rpb25OYW1lfSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0IG9uICR7bW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lfS4gTG9hZGVkIHdhczogJHtyZWxhdGlvbnNoaXBzTG9hZGVkLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QXJyYXk8TW9kZWxPZjxNQz4+fSAqL1xuICBsb2FkZWRBcnJheSgpIHtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLmxvYWRlZCgpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2FkZWQpKSB7XG4gICAgICByZXR1cm4gbG9hZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIidsb2FkZWQnIHdhc24ndCBhbiBhcnJheVwiKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlcGxhY2VzIHRoZSByZWxhdGlvbnNoaXBzIHdpdGggdGhlIGdpdmVuIG5ldyBjb2xsZWN0aW9uLlxuICAvKipcbiAgICogQHBhcmFtIHtBcnJheTxNb2RlbE9mPE1DPj59IG5ld0NvbGxlY3Rpb25cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzZXQobmV3Q29sbGVjdGlvbikge1xuICAgIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzW3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZV0gPSBuZXdDb2xsZWN0aW9uXG4gIH1cblxuICAvLyBQdXNoZXMgYW5vdGhlciBtb2RlbCBvbnRvIHRoZSBnaXZlbiBjb2xsZWN0aW9uLlxuICAvKipcbiAgICogQHBhcmFtIHtNb2RlbE9mPE1DPn0gbmV3TW9kZWxcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwdXNoKG5ld01vZGVsKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmICghKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICBtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXSA9IFtdXG4gICAgfVxuXG4gICAgaWYgKCFtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXS5pbmNsdWRlcyhuZXdNb2RlbCkpIHtcbiAgICAgIG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVmbGVjdGlvbk5hbWVdLnB1c2gobmV3TW9kZWwpXG4gICAgfVxuICB9XG5cbiAgLy8gQXJyYXkgc2hvcnRjdXRzXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0KTogYm9vbGVhbn0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fVxuICAgKi9cbiAgZmluZChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZpbmQoY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZvckVhY2goY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHthbnlbXX1cbiAgICovXG4gIG1hcChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLm1hcChjYWxsYmFjaykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwcmVsb2FkVmFsdWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwcmVsb2FkKHByZWxvYWRWYWx1ZSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cHJlbG9hZDogcHJlbG9hZFZhbHVlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHBhZ2UocGFnZSkge1xuICAgIGNvbnN0IHBhZ2VUb1VzZSA9IHBhZ2UgfHwgMVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwYWdlOiBwYWdlVG9Vc2V9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYWdlS2V5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGFnZUtleShwYWdlS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwYWdlS2V5fSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaXNGaWx0ZXJlZCgpIHtcbiAgICBjb25zdCB7cXVlcnlBcmdzfSA9IHRoaXNcblxuICAgIGlmIChcbiAgICAgIHF1ZXJ5QXJncy5hY2Nlc3NpYmxlQnkgfHxcbiAgICAgIHF1ZXJ5QXJncy5jb3VudCB8fFxuICAgICAgcXVlcnlBcmdzLmxpbWl0IHx8XG4gICAgICBxdWVyeUFyZ3MucGFnZSB8fFxuICAgICAgcXVlcnlBcmdzLnBhcmFtcyB8fFxuICAgICAgcXVlcnlBcmdzLnBlciB8fFxuICAgICAgcXVlcnlBcmdzLnJhbnNhY2sgfHxcbiAgICAgIHF1ZXJ5QXJncy5zZWFyY2hcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIGFueT59ICovXG4gIHBhcmFtcygpIHtcbiAgICBsZXQgcGFyYW1zID0ge31cblxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wYXJhbXMpIHBhcmFtcyA9IGluY29ycG9yYXRlKHBhcmFtcywgdGhpcy5xdWVyeUFyZ3MucGFyYW1zKVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5hYmlsaXRpZXMpIHBhcmFtcy5hYmlsaXRpZXMgPSB0aGlzLnF1ZXJ5QXJncy5hYmlsaXRpZXNcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5KSBwYXJhbXMuYWNjZXNzaWJsZV9ieSA9IGluZmxlY3Rpb24udW5kZXJzY29yZSh0aGlzLnF1ZXJ5QXJncy5hY2Nlc3NpYmxlQnkpXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmNvdW50KSBwYXJhbXMuY291bnQgPSB0aGlzLnF1ZXJ5QXJncy5jb3VudFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5kaXN0aW5jdCkgcGFyYW1zLmRpc3RpbmN0ID0gdGhpcy5xdWVyeUFyZ3MuZGlzdGluY3RcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuZ3JvdXBCeSkgcGFyYW1zLmdyb3VwX2J5ID0gdGhpcy5xdWVyeUFyZ3MuZ3JvdXBCeVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5yYW5zYWNrKSBwYXJhbXMucSA9IHRoaXMucXVlcnlBcmdzLnJhbnNhY2tcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MubGltaXQpIHBhcmFtcy5saW1pdCA9IHRoaXMucXVlcnlBcmdzLmxpbWl0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnByZWxvYWQpIHBhcmFtcy5wcmVsb2FkID0gdGhpcy5xdWVyeUFyZ3MucHJlbG9hZFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wYWdlKSBwYXJhbXMucGFnZSA9IHRoaXMucXVlcnlBcmdzLnBhZ2VcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGVyKSBwYXJhbXMucGVyID0gdGhpcy5xdWVyeUFyZ3MucGVyXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnNlYXJjaCkgcGFyYW1zLnNlYXJjaCA9IHRoaXMucXVlcnlBcmdzLnNlYXJjaFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5zZWxlY3QpIHBhcmFtcy5zZWxlY3QgPSB0aGlzLnF1ZXJ5QXJncy5zZWxlY3RcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3Muc2VsZWN0Q29sdW1ucykgcGFyYW1zLnNlbGVjdF9jb2x1bW5zID0gdGhpcy5xdWVyeUFyZ3Muc2VsZWN0Q29sdW1uc1xuXG4gICAgcmV0dXJuIHBhcmFtc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwZXJcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwZXIocGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwZXJ9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwZXJLZXlcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwZXJLZXkocGVyS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwZXJLZXl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gcGFyYW1zXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcmFuc2FjayhwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zKSB0aGlzLl9tZXJnZSh7cmFuc2FjazogcGFyYW1zfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdD59ICovXG4gIGFzeW5jIHJlc3VsdCgpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX3Jlc3BvbnNlKClcbiAgICBjb25zdCBtb2RlbHMgPSBkaWdnKHJlc3BvbnNlLCBcImNvbGxlY3Rpb25cIilcblxuICAgIHRoaXMuX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlc3VsdCgvKiogQHR5cGUge2FueX0gKi8gKHtjb2xsZWN0aW9uOiB0aGlzLCBtb2RlbHMsIHJlc3BvbnNlfSkpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBwYXJhbXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWFyY2gocGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcykgdGhpcy5fbWVyZ2Uoe3NlYXJjaDogcGFyYW1zfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hLZXlcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWFyY2hLZXkoc2VhcmNoS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWFyY2hLZXl9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBvcmlnaW5hbFNlbGVjdFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNlbGVjdChvcmlnaW5hbFNlbGVjdCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSAqLyAoe30pXG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsTW9kZWxOYW1lIGluIG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxNb2RlbE5hbWUpXG4gICAgICBjb25zdCBuZXdWYWx1ZXMgPSBbXVxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBvcmlnaW5hbFNlbGVjdFtvcmlnaW5hbE1vZGVsTmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZU5hbWUgb2Ygb3JpZ2luYWxWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEF0dHJpYnV0ZU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0F0dHJpYnV0ZU5hbWUpXG4gICAgICB9XG5cbiAgICAgIG5ld1NlbGVjdFtuZXdNb2RlbE5hbWVdID0gbmV3VmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWxlY3Q6IG5ld1NlbGVjdH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IG9yaWdpbmFsU2VsZWN0XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2VsZWN0Q29sdW1ucyhvcmlnaW5hbFNlbGVjdCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdCA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSAqLyAoe30pXG5cbiAgICBmb3IgKGNvbnN0IG9yaWdpbmFsTW9kZWxOYW1lIGluIG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsTW9kZWxOYW1lKSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsU2VsZWN0W29yaWdpbmFsTW9kZWxOYW1lXVxuXG4gICAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlTmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQXR0cmlidXRlTmFtZSlcbiAgICAgICAgbmV3VmFsdWVzLnB1c2gobmV3QXR0cmlidXRlTmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3U2VsZWN0W25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3NlbGVjdENvbHVtbnM6IG5ld1NlbGVjdH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvcnRCeVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNvcnQoc29ydEJ5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtyYW5zYWNrOiB7czogc29ydEJ5fX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8QXJyYXk8TW9kZWxPZjxNQz4+Pn0gKi9cbiAgYXN5bmMgdG9BcnJheSgpIHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuX3Jlc3BvbnNlKClcbiAgICBjb25zdCBtb2RlbHMgPSBkaWdnKHJlc3BvbnNlLCBcImNvbGxlY3Rpb25cIilcblxuICAgIHRoaXMuX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKVxuXG4gICAgcmV0dXJuIG1vZGVsc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtNQ30gKi9cbiAgbW9kZWxDbGFzcygpIHtcbiAgICBpZiAoIXRoaXMuYXJncy5tb2RlbENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBtb2RlbCBjbGFzcyBnaXZlbiBpbiBhcmdzXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXJncy5tb2RlbENsYXNzXG4gIH1cblxuICAvKiogQHJldHVybnMge0FwaU1ha2VyQ29sbGVjdGlvbn0gKi9cbiAgY2xvbmUoKSB7XG4gICAgY29uc3QgY2xvbmVkUXVlcnlBcmdzID0gY2xvbmVEZWVwKHRoaXMucXVlcnlBcmdzKVxuXG4gICAgcmV0dXJuIG5ldyBBcGlNYWtlckNvbGxlY3Rpb24odGhpcy5hcmdzLCBjbG9uZWRRdWVyeUFyZ3MpXG4gIH1cblxuICAvLyBUaGlzIGlzIG5lZWRlZCB3aGVuIHJlbG9hZGluZyBhIHZlcnNpb24gb2YgdGhlIG1vZGVsIHdpdGggdGhlIHNhbWUgc2VsZWN0ZWQgYXR0cmlidXRlcyBhbmQgcHJlbG9hZHNcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXJyYXk8TW9kZWxPZjxNQz4+fSBtb2RlbHNcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBfYWRkUXVlcnlUb01vZGVscyhtb2RlbHMpIHtcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgICAgbW9kZWwuY29sbGVjdGlvbiA9IHRoaXNcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtRdWVyeUFyZ3NUeXBlfSBuZXdRdWVyeUFyZ3NcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBfbWVyZ2UobmV3UXVlcnlBcmdzKSB7XG4gICAgaW5jb3Jwb3JhdGUodGhpcy5xdWVyeUFyZ3MsIG5ld1F1ZXJ5QXJncylcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8e2NvbGxlY3Rpb246IEFycmF5PE1vZGVsT2Y8TUM+Pn0+fSAqL1xuICBfcmVzcG9uc2UoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MpIHRocm93IG5ldyBFcnJvcihcIk5vIGFyZ3M/XCIpXG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW9kZWxDbGFzcyBpbiBhcmdzXCIpXG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzRGF0YSBvbiBtb2RlbENsYXNzICR7dGhpcy5hcmdzLm1vZGVsQ2xhc3M/Lm5hbWV9ICgke3R5cGVvZiB0aGlzLmFyZ3MubW9kZWxDbGFzc30pYClcblxuICAgIGNvbnN0IG1vZGVsQ2xhc3NEYXRhID0gdGhpcy5hcmdzLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKVxuXG4gICAgcmV0dXJuIENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKFxuICAgICAge1xuICAgICAgICBhcmdzOiB0aGlzLnBhcmFtcygpLFxuICAgICAgICBjb21tYW5kOiBgJHttb2RlbENsYXNzRGF0YS5jb2xsZWN0aW9uTmFtZX0taW5kZXhgLFxuICAgICAgICBjb2xsZWN0aW9uTmFtZTogbW9kZWxDbGFzc0RhdGEuY29sbGVjdGlvbk5hbWUsXG4gICAgICAgIHR5cGU6IFwiaW5kZXhcIlxuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKVxuICB9XG59XG4iXX0=
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY29sbGVjdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUEsQ0FBQyxtQ0FBbUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQSxDQUFDLG1DQUFtQztBQUM1RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQSxDQUFDLG1DQUFtQztBQUNwRSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFFakM7OztHQUdHO0FBRUgsZ0RBQWdEO0FBRWhELCtFQUErRTtBQUUvRTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILDhEQUE4RDtBQUM5RCxNQUFNLENBQUMsT0FBTyxPQUFPLGtCQUFrQjtJQUNyQyxNQUFNLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtJQUVsQzs7O09BR0c7SUFDSCxZQUFZLElBQUksRUFBRSxTQUFTLEdBQUcsRUFBRTtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFL0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxpQkFBaUI7UUFDekIsTUFBTSxZQUFZLEdBQUcsdUNBQXVDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVqRSxLQUFLLE1BQU0sbUJBQW1CLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUE7WUFDL0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUE7WUFFN0QsS0FBSyxNQUFNLG1CQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUE7Z0JBQ2pFLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDaEMsQ0FBQztZQUVELFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUE7UUFDeEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsV0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRTthQUNoQyxNQUFNLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7YUFDckIsU0FBUyxFQUFFLENBQUE7UUFFZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUTtRQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVsQyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBRyxJQUFJO1FBQ1osS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbkMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxHQUFHLHVCQUF1QjtRQUNoQyxNQUFNLDJDQUEyQyxHQUFHLCtDQUErQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFeEcsS0FBSyxNQUFNLGNBQWMsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1lBQ3JELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNsQywyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN4RyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sMkNBQTJDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1lBQ2hGLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFBO1FBQ25ELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsMkNBQTJDLENBQUMsQ0FBQTtRQUVyRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsT0FBTyxFQUFFLFVBQVU7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixRQUFRO1FBQ04sTUFBTSxFQUFDLEtBQUssRUFBRSxjQUFjLEVBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBRXpDLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQzthQUFNLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsU0FBUztRQUNQLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLHdCQUF3QixDQUFDLENBQUE7UUFDdEUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNyRSxDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELE1BQU07UUFDSixNQUFNLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFFekMsSUFBSSxjQUFjLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFDLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUM1QyxDQUFDO2FBQU0sSUFBSSxjQUFjLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEQsT0FBTyxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDakQsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDL0IsTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBRXRFLCtEQUErRDtZQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBRVosT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFBO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO1lBRXJILE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxjQUFjLDhCQUE4QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUM5SSxDQUFDO0lBQ0gsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBRTVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCw0REFBNEQ7SUFDNUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLGFBQWE7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxhQUFhLENBQUE7SUFDekUsQ0FBQztJQUVELGtEQUFrRDtJQUNsRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsUUFBUTtRQUNYLE1BQU0sRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUV6QyxJQUFJLENBQUMsQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzVELEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCOzs7T0FHRztJQUNILElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUUzRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFakU7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXpEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxZQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsSUFBSTtRQUNQLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUE7UUFFM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLFVBQVU7UUFDUixNQUFNLEVBQUMsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFBO1FBRXhCLElBQ0UsU0FBUyxDQUFDLFlBQVk7WUFDdEIsU0FBUyxDQUFDLEtBQUs7WUFDZixTQUFTLENBQUMsS0FBSztZQUNmLFNBQVMsQ0FBQyxJQUFJO1lBQ2QsU0FBUyxDQUFDLE1BQU07WUFDaEIsU0FBUyxDQUFDLEdBQUc7WUFDYixTQUFTLENBQUMsT0FBTztZQUNqQixTQUFTLENBQUMsTUFBTSxFQUNoQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLE1BQU07UUFDSixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFFZixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVM7WUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFBO1FBQ3pFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZO1lBQUUsTUFBTSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDMUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFBO1FBQzdELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1lBQUUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQTtRQUN0RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUFFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUE7UUFDcEUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFBO1FBQzdELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQTtRQUM3RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUFFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUE7UUFDbkUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUk7WUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFBO1FBQzFELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHO1lBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQTtRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtZQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUE7UUFDaEUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFBO1FBQ2hFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhO1lBQUUsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQTtRQUV0RixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLE1BQU07UUFDWixJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDMUMsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQTtRQUVwRixPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUN6QyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsU0FBUztRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsY0FBYztRQUNuQixNQUFNLFNBQVMsR0FBRyx1Q0FBdUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRTlELEtBQUssTUFBTSxpQkFBaUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDN0QsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBRXhELEtBQUssTUFBTSxxQkFBcUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUE7Z0JBQ3JFLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUNsQyxDQUFDO1lBRUQsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxjQUFjO1FBQzFCLE1BQU0sU0FBUyxHQUFHLHVDQUF1QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFOUQsS0FBSyxNQUFNLGlCQUFpQixJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQy9DLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7WUFDcEYsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBRXhELEtBQUssTUFBTSxxQkFBcUIsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUE7Z0JBQ3JFLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUNsQyxDQUFDO1lBRUQsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQTtRQUNyQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsYUFBYSxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxNQUFNO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBQyxFQUFDLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUUzQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFOUIsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7UUFDakQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDN0IsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxLQUFLO1FBQ0gsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVqRCxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRUQsc0dBQXNHO0lBQ3RHOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLE1BQU07UUFDdEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxZQUFZO1FBQ2pCLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBRXpDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFBO1FBRTNKLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRTVELE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FDNUI7WUFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixPQUFPLEVBQUUsR0FBRyxjQUFjLENBQUMsY0FBYyxRQUFRO1lBQ2pELGNBQWMsRUFBRSxjQUFjLENBQUMsY0FBYztZQUM3QyxJQUFJLEVBQUUsT0FBTztTQUNkLEVBQ0QsRUFBRSxDQUNILENBQUE7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsb25lRGVlcCBmcm9tIFwiY2xvbmUtZGVlcFwiXG5pbXBvcnQgQ29tbWFuZHNQb29sIGZyb20gXCIuL2NvbW1hbmRzLXBvb2wuanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IHtpbmNvcnBvcmF0ZX0gZnJvbSBcImluY29ycG9yYXRvclwiXG5pbXBvcnQgUmVzdWx0IGZyb20gXCIuL3Jlc3VsdC5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgdW5pcXVuaXplIGZyb20gXCJ1bmlxdW5pemVcIlxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBNQ1xuICogQHR5cGVkZWYge0luc3RhbmNlVHlwZTxNQz59IE1vZGVsT2ZcbiAqL1xuXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIGFueT59IFByZWxvYWRNYXAgKi9cblxuLyoqIEB0eXBlZGVmIHtzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBQcmVsb2FkTWFwPiB8IFByZWxvYWRNYXB9IFByZWxvYWRWYWx1ZSAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBNQ1xuICogQHR5cGVkZWYge29iamVjdH0gQ29sbGVjdGlvbkFyZ3NUeXBlXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBbbW9kZWxdXG4gKiBAcHJvcGVydHkge01DfSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlZmxlY3Rpb25OYW1lXVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUXVlcnlBcmdzVHlwZVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFthYmlsaXRpZXNdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FjY2Vzc2libGVCeV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NvdW50XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGlzdGluY3RdXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZyB8IFtzdHJpbmcsIHN0cmluZ10+fSBbZ3JvdXBCeV1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbGltaXRdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3BhZ2VdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BhZ2VLZXldXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtwYXJhbXNdXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3Blcl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcGVyS2V5XVxuICogQHByb3BlcnR5IHtQcmVsb2FkVmFsdWV9IFtwcmVsb2FkXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcmFuc2Fja11cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW3NlYXJjaF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2VhcmNoS2V5XVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKi9cblxuLyoqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBNQyAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb2xsZWN0aW9uIHtcbiAgc3RhdGljIGFwaU1ha2VyVHlwZSA9IFwiQ29sbGVjdGlvblwiXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvbkFyZ3NUeXBlPE1DPn0gYXJnc1xuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IHF1ZXJ5QXJnc1xuICAgKi9cbiAgY29uc3RydWN0b3IoYXJncywgcXVlcnlBcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3MubW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbENsYXNzIGdpdmVuIGluICR7T2JqZWN0LmtleXMoYXJncykuam9pbihcIiwgXCIpfWApXG5cbiAgICB0aGlzLnF1ZXJ5QXJncyA9IHF1ZXJ5QXJnc1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gb3JpZ2luYWxBYmlsaXRpZXNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBhYmlsaXRpZXMob3JpZ2luYWxBYmlsaXRpZXMpIHtcbiAgICBjb25zdCBuZXdBYmlsaXRpZXMgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbEFiaWxpdHlOYW1lIGluIG9yaWdpbmFsQWJpbGl0aWVzKSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxBYmlsaXR5TmFtZSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsQWJpbGl0aWVzW29yaWdpbmFsQWJpbGl0eU5hbWVdXG5cbiAgICAgIGZvciAoY29uc3Qgb3JpZ2luYWxBYmlsaXR5TmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBYmlsaXR5TmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEFiaWxpdHlOYW1lKVxuICAgICAgICBuZXdWYWx1ZXMucHVzaChuZXdBYmlsaXR5TmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3QWJpbGl0aWVzW25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2FiaWxpdGllczogbmV3QWJpbGl0aWVzfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWJpbGl0eU5hbWVcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBhY2Nlc3NpYmxlQnkoYWJpbGl0eU5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2FjY2Vzc2libGVCeTogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGFiaWxpdHlOYW1lKX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gKi9cbiAgYXN5bmMgY291bnQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNsb25lKClcbiAgICAgIC5fbWVyZ2Uoe2NvdW50OiB0cnVlfSlcbiAgICAgIC5fcmVzcG9uc2UoKVxuXG4gICAgcmV0dXJuIGRpZ2cocmVzcG9uc2UsIFwiY291bnRcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dGhpc30gKi9cbiAgZGlzdGluY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtkaXN0aW5jdDogdHJ1ZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCkgOiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGVhY2goY2FsbGJhY2spIHtcbiAgICBjb25zdCBhcnJheSA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIGluIGFycmF5KSB7XG4gICAgICBjYWxsYmFjay5jYWxsKG1vZGVsKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLnN0cmluZ30ga2V5c1xuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGV4Y2VwdCguLi5rZXlzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKGtleSA9PSBcInBhZ2VcIikge1xuICAgICAgICBkZWxldGUgdGhpcy5xdWVyeUFyZ3Nba2V5XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQga2V5OiAke2tleX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8TW9kZWxPZjxNQz4+fSAqL1xuICBhc3luYyBmaXJzdCgpIHtcbiAgICBjb25zdCBtb2RlbHMgPSBhd2FpdCB0aGlzLnRvQXJyYXkoKVxuICAgIHJldHVybiBtb2RlbHNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gey4uLihzdHJpbmcgfCBbc3RyaW5nLCBzdHJpbmddKX0gYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBncm91cEJ5KC4uLmFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zKSB7XG4gICAgY29uc3QgYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNXaXRoTG93ZXJjYXNlQ29sdW1ucyA9IC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nIHwgW3N0cmluZywgc3RyaW5nXT59ICovIChbXSlcblxuICAgIGZvciAoY29uc3QgdGFibGVBbmRDb2x1bW4gb2YgYXJyYXlPZlRhYmxlc0FuZENvbHVtbnMpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhYmxlQW5kQ29sdW1uKSkge1xuICAgICAgICBhcnJheU9mVGFibGVzQW5kQ29sdW1uc1dpdGhMb3dlcmNhc2VDb2x1bW5zLnB1c2goW3RhYmxlQW5kQ29sdW1uWzBdLCB0YWJsZUFuZENvbHVtblsxXS50b0xvd2VyQ2FzZSgpXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMucHVzaCh0YWJsZUFuZENvbHVtbi50b0xvd2VyQ2FzZSgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRHcm91cEJ5ID0gdGhpcy5xdWVyeUFyZ3MuZ3JvdXBCeSB8fCBbXVxuICAgIGNvbnN0IG5ld0dyb3VwQnkgPSBjdXJyZW50R3JvdXBCeS5jb25jYXQoYXJyYXlPZlRhYmxlc0FuZENvbHVtbnNXaXRoTG93ZXJjYXNlQ29sdW1ucylcblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7XG4gICAgICBncm91cEJ5OiBuZXdHcm91cEJ5XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxNb2RlbE9mPE1DPiB8IEFycmF5PE1vZGVsT2Y8TUM+PiB8IG51bGw+fSAqL1xuICBhc3luYyBlbnN1cmVMb2FkZWQoKSB7XG4gICAgaWYgKCF0aGlzLmlzTG9hZGVkKCkpIHtcbiAgICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG5cbiAgICAgIHRoaXMuc2V0KG1vZGVscylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkZWQoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBpc0xvYWRlZCgpIHtcbiAgICBjb25zdCB7bW9kZWwsIHJlZmxlY3Rpb25OYW1lfSA9IHRoaXMuYXJnc1xuXG4gICAgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGFtb3VudFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIGxpbWl0KGFtb3VudCkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7bGltaXQ6IGFtb3VudH0pXG4gIH1cblxuICAvKiogQHJldHVybnMge0FycmF5PE1vZGVsT2Y8TUM+Pn0gKi9cbiAgcHJlbG9hZGVkKCkge1xuICAgIGlmICghKHRoaXMuYXJncy5yZWZsZWN0aW9uTmFtZSBpbiB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc0NhY2hlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZX0gaGFzbnQgYmVlbiBsb2FkZWQgeWV0YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVt0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWVdXG4gIH1cblxuICAvKiogQHJldHVybnMge01vZGVsT2Y8TUM+IHwgQXJyYXk8TW9kZWxPZjxNQz4+fSAqL1xuICBsb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKG1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZsZWN0aW9uTmFtZSlcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBhcyBlbXB0eSBhbmQgdHJ5IGFnYWluIHRvIHJldHVybiB0aGUgZW1wdHkgcmVzdWx0XG4gICAgICB0aGlzLnNldChbXSlcblxuICAgICAgcmV0dXJuIGRpZ2cobW9kZWwucmVsYXRpb25zaGlwcywgcmVmbGVjdGlvbk5hbWVVbmRlcnNjb3JlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzTG9hZGVkID0gdW5pcXVuaXplKE9iamVjdC5rZXlzKG1vZGVsLnJlbGF0aW9uc2hpcHMpLmNvbmNhdChPYmplY3Qua2V5cyhtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSlcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlZmxlY3Rpb25OYW1lfSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0IG9uICR7bW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lfS4gTG9hZGVkIHdhczogJHtyZWxhdGlvbnNoaXBzTG9hZGVkLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QXJyYXk8TW9kZWxPZjxNQz4+fSAqL1xuICBsb2FkZWRBcnJheSgpIHtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLmxvYWRlZCgpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShsb2FkZWQpKSB7XG4gICAgICByZXR1cm4gbG9hZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIidsb2FkZWQnIHdhc24ndCBhbiBhcnJheVwiKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlcGxhY2VzIHRoZSByZWxhdGlvbnNoaXBzIHdpdGggdGhlIGdpdmVuIG5ldyBjb2xsZWN0aW9uLlxuICAvKipcbiAgICogQHBhcmFtIHtBcnJheTxNb2RlbE9mPE1DPj59IG5ld0NvbGxlY3Rpb25cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzZXQobmV3Q29sbGVjdGlvbikge1xuICAgIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzW3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZV0gPSBuZXdDb2xsZWN0aW9uXG4gIH1cblxuICAvLyBQdXNoZXMgYW5vdGhlciBtb2RlbCBvbnRvIHRoZSBnaXZlbiBjb2xsZWN0aW9uLlxuICAvKipcbiAgICogQHBhcmFtIHtNb2RlbE9mPE1DPn0gbmV3TW9kZWxcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwdXNoKG5ld01vZGVsKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmICghKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICBtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXSA9IFtdXG4gICAgfVxuXG4gICAgaWYgKCFtb2RlbC5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXS5pbmNsdWRlcyhuZXdNb2RlbCkpIHtcbiAgICAgIG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVmbGVjdGlvbk5hbWVdLnB1c2gobmV3TW9kZWwpXG4gICAgfVxuICB9XG5cbiAgLy8gQXJyYXkgc2hvcnRjdXRzXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0KTogYm9vbGVhbn0gY2FsbGJhY2tcbiAgICogQHJldHVybnMge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fVxuICAgKi9cbiAgZmluZChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZpbmQoY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZm9yRWFjaChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLmZvckVhY2goY2FsbGJhY2spIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtmdW5jdGlvbihpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCk6IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHthbnlbXX1cbiAgICovXG4gIG1hcChjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5sb2FkZWRBcnJheSgpLm1hcChjYWxsYmFjaykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1ByZWxvYWRWYWx1ZX0gcHJlbG9hZFZhbHVlXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcHJlbG9hZChwcmVsb2FkVmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3ByZWxvYWQ6IHByZWxvYWRWYWx1ZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBwYWdlKHBhZ2UpIHtcbiAgICBjb25zdCBwYWdlVG9Vc2UgPSBwYWdlIHx8IDFcblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGFnZTogcGFnZVRvVXNlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGFnZUtleVxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHBhZ2VLZXkocGFnZUtleSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGFnZUtleX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW59ICovXG4gIGlzRmlsdGVyZWQoKSB7XG4gICAgY29uc3Qge3F1ZXJ5QXJnc30gPSB0aGlzXG5cbiAgICBpZiAoXG4gICAgICBxdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5IHx8XG4gICAgICBxdWVyeUFyZ3MuY291bnQgfHxcbiAgICAgIHF1ZXJ5QXJncy5saW1pdCB8fFxuICAgICAgcXVlcnlBcmdzLnBhZ2UgfHxcbiAgICAgIHF1ZXJ5QXJncy5wYXJhbXMgfHxcbiAgICAgIHF1ZXJ5QXJncy5wZXIgfHxcbiAgICAgIHF1ZXJ5QXJncy5yYW5zYWNrIHx8XG4gICAgICBxdWVyeUFyZ3Muc2VhcmNoXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBwYXJhbXMoKSB7XG4gICAgbGV0IHBhcmFtcyA9IHt9XG5cbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFyYW1zKSBwYXJhbXMgPSBpbmNvcnBvcmF0ZShwYXJhbXMsIHRoaXMucXVlcnlBcmdzLnBhcmFtcylcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzKSBwYXJhbXMuYWJpbGl0aWVzID0gdGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmFjY2Vzc2libGVCeSkgcGFyYW1zLmFjY2Vzc2libGVfYnkgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5xdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5KVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5jb3VudCkgcGFyYW1zLmNvdW50ID0gdGhpcy5xdWVyeUFyZ3MuY291bnRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuZGlzdGluY3QpIHBhcmFtcy5kaXN0aW5jdCA9IHRoaXMucXVlcnlBcmdzLmRpc3RpbmN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmdyb3VwQnkpIHBhcmFtcy5ncm91cF9ieSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnlcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucmFuc2FjaykgcGFyYW1zLnEgPSB0aGlzLnF1ZXJ5QXJncy5yYW5zYWNrXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmxpbWl0KSBwYXJhbXMubGltaXQgPSB0aGlzLnF1ZXJ5QXJncy5saW1pdFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wcmVsb2FkKSBwYXJhbXMucHJlbG9hZCA9IHRoaXMucXVlcnlBcmdzLnByZWxvYWRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFnZSkgcGFyYW1zLnBhZ2UgPSB0aGlzLnF1ZXJ5QXJncy5wYWdlXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnBlcikgcGFyYW1zLnBlciA9IHRoaXMucXVlcnlBcmdzLnBlclxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5zZWFyY2gpIHBhcmFtcy5zZWFyY2ggPSB0aGlzLnF1ZXJ5QXJncy5zZWFyY2hcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3Muc2VsZWN0KSBwYXJhbXMuc2VsZWN0ID0gdGhpcy5xdWVyeUFyZ3Muc2VsZWN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnMpIHBhcmFtcy5zZWxlY3RfY29sdW1ucyA9IHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnNcblxuICAgIHJldHVybiBwYXJhbXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcGVyXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGVyKHBlcikge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGVyfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGVyS2V5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgcGVyS2V5KHBlcktleSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGVyS2V5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHJhbnNhY2socGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcykgdGhpcy5fbWVyZ2Uoe3JhbnNhY2s6IHBhcmFtc30pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ+fSAqL1xuICBhc3luYyByZXN1bHQoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9yZXNwb25zZSgpXG4gICAgY29uc3QgbW9kZWxzID0gZGlnZyhyZXNwb25zZSwgXCJjb2xsZWN0aW9uXCIpXG5cbiAgICB0aGlzLl9hZGRRdWVyeVRvTW9kZWxzKG1vZGVscylcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXN1bHQoLyoqIEB0eXBlIHthbnl9ICovICh7Y29sbGVjdGlvbjogdGhpcywgbW9kZWxzLCByZXNwb25zZX0pKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gcGFyYW1zXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2VhcmNoKHBhcmFtcykge1xuICAgIGlmIChwYXJhbXMpIHRoaXMuX21lcmdlKHtzZWFyY2g6IHBhcmFtc30pXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoS2V5XG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgc2VhcmNoS2V5KHNlYXJjaEtleSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7c2VhcmNoS2V5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gb3JpZ2luYWxTZWxlY3RcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzZWxlY3Qob3JpZ2luYWxTZWxlY3QpIHtcbiAgICBjb25zdCBuZXdTZWxlY3QgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbE1vZGVsTmFtZSBpbiBvcmlnaW5hbFNlbGVjdCkge1xuICAgICAgY29uc3QgbmV3TW9kZWxOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsTW9kZWxOYW1lKVxuICAgICAgY29uc3QgbmV3VmFsdWVzID0gW11cbiAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gb3JpZ2luYWxTZWxlY3Rbb3JpZ2luYWxNb2RlbE5hbWVdXG5cbiAgICAgIGZvciAoY29uc3Qgb3JpZ2luYWxBdHRyaWJ1dGVOYW1lIG9mIG9yaWdpbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxBdHRyaWJ1dGVOYW1lKVxuICAgICAgICBuZXdWYWx1ZXMucHVzaChuZXdBdHRyaWJ1dGVOYW1lKVxuICAgICAgfVxuXG4gICAgICBuZXdTZWxlY3RbbmV3TW9kZWxOYW1lXSA9IG5ld1ZhbHVlc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7c2VsZWN0OiBuZXdTZWxlY3R9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBvcmlnaW5hbFNlbGVjdFxuICAgKiBAcmV0dXJucyB7dGhpc31cbiAgICovXG4gIHNlbGVjdENvbHVtbnMob3JpZ2luYWxTZWxlY3QpIHtcbiAgICBjb25zdCBuZXdTZWxlY3QgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbE1vZGVsTmFtZSBpbiBvcmlnaW5hbFNlbGVjdCkge1xuICAgICAgY29uc3QgbmV3TW9kZWxOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbE1vZGVsTmFtZSkpXG4gICAgICBjb25zdCBuZXdWYWx1ZXMgPSBbXVxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBvcmlnaW5hbFNlbGVjdFtvcmlnaW5hbE1vZGVsTmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZU5hbWUgb2Ygb3JpZ2luYWxWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEF0dHJpYnV0ZU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0F0dHJpYnV0ZU5hbWUpXG4gICAgICB9XG5cbiAgICAgIG5ld1NlbGVjdFtuZXdNb2RlbE5hbWVdID0gbmV3VmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWxlY3RDb2x1bW5zOiBuZXdTZWxlY3R9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3J0QnlcbiAgICogQHJldHVybnMge3RoaXN9XG4gICAqL1xuICBzb3J0KHNvcnRCeSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cmFuc2Fjazoge3M6IHNvcnRCeX19KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PE1vZGVsT2Y8TUM+Pj59ICovXG4gIGFzeW5jIHRvQXJyYXkoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9yZXNwb25zZSgpXG4gICAgY29uc3QgbW9kZWxzID0gZGlnZyhyZXNwb25zZSwgXCJjb2xsZWN0aW9uXCIpXG5cbiAgICB0aGlzLl9hZGRRdWVyeVRvTW9kZWxzKG1vZGVscylcblxuICAgIHJldHVybiBtb2RlbHNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7TUN9ICovXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3MubW9kZWxDbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbW9kZWwgY2xhc3MgZ2l2ZW4gaW4gYXJnc1wiKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFyZ3MubW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcGlNYWtlckNvbGxlY3Rpb259ICovXG4gIGNsb25lKCkge1xuICAgIGNvbnN0IGNsb25lZFF1ZXJ5QXJncyA9IGNsb25lRGVlcCh0aGlzLnF1ZXJ5QXJncylcblxuICAgIHJldHVybiBuZXcgQXBpTWFrZXJDb2xsZWN0aW9uKHRoaXMuYXJncywgY2xvbmVkUXVlcnlBcmdzKVxuICB9XG5cbiAgLy8gVGhpcyBpcyBuZWVkZWQgd2hlbiByZWxvYWRpbmcgYSB2ZXJzaW9uIG9mIHRoZSBtb2RlbCB3aXRoIHRoZSBzYW1lIHNlbGVjdGVkIGF0dHJpYnV0ZXMgYW5kIHByZWxvYWRzXG4gIC8qKlxuICAgKiBAcGFyYW0ge0FycmF5PE1vZGVsT2Y8TUM+Pn0gbW9kZWxzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgX2FkZFF1ZXJ5VG9Nb2RlbHMobW9kZWxzKSB7XG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiBtb2RlbHMpIHtcbiAgICAgIG1vZGVsLmNvbGxlY3Rpb24gPSB0aGlzXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UXVlcnlBcmdzVHlwZX0gbmV3UXVlcnlBcmdzXG4gICAqIEByZXR1cm5zIHt0aGlzfVxuICAgKi9cbiAgX21lcmdlKG5ld1F1ZXJ5QXJncykge1xuICAgIGluY29ycG9yYXRlKHRoaXMucXVlcnlBcmdzLCBuZXdRdWVyeUFyZ3MpXG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPHtjb2xsZWN0aW9uOiBBcnJheTxNb2RlbE9mPE1DPj59Pn0gKi9cbiAgX3Jlc3BvbnNlKCkge1xuICAgIGlmICghdGhpcy5hcmdzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBhcmdzP1wiKVxuICAgIGlmICghdGhpcy5hcmdzLm1vZGVsQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk5vIG1vZGVsQ2xhc3MgaW4gYXJnc1wiKVxuICAgIGlmICghdGhpcy5hcmdzLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEpIHRocm93IG5ldyBFcnJvcihgTm8gbW9kZWxDbGFzc0RhdGEgb24gbW9kZWxDbGFzcyAke3RoaXMuYXJncy5tb2RlbENsYXNzPy5uYW1lfSAoJHt0eXBlb2YgdGhpcy5hcmdzLm1vZGVsQ2xhc3N9KWApXG5cbiAgICBjb25zdCBtb2RlbENsYXNzRGF0YSA9IHRoaXMuYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKClcblxuICAgIHJldHVybiBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgIHtcbiAgICAgICAgYXJnczogdGhpcy5wYXJhbXMoKSxcbiAgICAgICAgY29tbWFuZDogYCR7bW9kZWxDbGFzc0RhdGEuY29sbGVjdGlvbk5hbWV9LWluZGV4YCxcbiAgICAgICAgY29sbGVjdGlvbk5hbWU6IG1vZGVsQ2xhc3NEYXRhLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgICB0eXBlOiBcImluZGV4XCJcbiAgICAgIH0sXG4gICAgICB7fVxuICAgIClcbiAgfVxufVxuIl19
|
package/build/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"/src/","sources":["form.jsx"],"names":[],"mappings":"AA+DA,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"/src/","sources":["form.jsx"],"names":[],"mappings":"AA+DA,uBAyDG;AA9GH,6CAAuC;AAGvC;IACE,wBAGC;IAFC,WAAgB;IAChB,cAA+B;IAGjC,eAWC;IAED,yBAEC;IAED,sCAIC;IAED,4BAIC;IAED,mFAMC;IAED,eAIC;CACF;AAlDD,+BAA6C;kBAVsB,OAAO"}
|
package/build/form.js
CHANGED
|
@@ -64,7 +64,8 @@ const Form = memo(shapeComponent(class Form extends BaseComponent {
|
|
|
64
64
|
const localForm = useMemo(() => new FormInputs({ onSubmit }), []);
|
|
65
65
|
const form = givenForm || localForm;
|
|
66
66
|
form.onSubmit = onSubmit;
|
|
67
|
-
|
|
67
|
+
// Keep form refs/state updates in effects so consumers do not trigger parent updates during render.
|
|
68
|
+
useEffect(() => {
|
|
68
69
|
if (formObjectRef) {
|
|
69
70
|
formObjectRef.current = form;
|
|
70
71
|
}
|
|
@@ -74,7 +75,8 @@ const Form = memo(shapeComponent(class Form extends BaseComponent {
|
|
|
74
75
|
formObjectRef.current = null;
|
|
75
76
|
}
|
|
76
77
|
}, [form, formObjectRef]);
|
|
77
|
-
|
|
78
|
+
// Propagate the stable form instance after commit so ShapeComponent parents stay on the mounted path.
|
|
79
|
+
useEffect(() => {
|
|
78
80
|
if (setForm) {
|
|
79
81
|
setForm(form);
|
|
80
82
|
}
|
|
@@ -90,4 +92,4 @@ const Form = memo(shapeComponent(class Form extends BaseComponent {
|
|
|
90
92
|
};
|
|
91
93
|
}));
|
|
92
94
|
export { Form, FormContext, FormInputs, useForm };
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZm9ybS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEtBQUssRUFBRSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMxRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RSxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQTtBQUM1QyxPQUFPLGtCQUFrQixNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUVsRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDdkMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRTdDLE1BQU0sVUFBVTtJQUNkLFlBQVksS0FBSztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUNqQixNQUFNLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQTtRQUVuRCxLQUFJLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRTlCLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLO1FBQ2xCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBSTtRQUNiLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBRWhELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFFMUIsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE9BQU8sZ0JBQU8sSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsUUFBUSxFQUFDLEtBQUssRUFBRSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFJLENBQUE7UUFDdkcsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSyxTQUFRLGFBQWE7SUFDL0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHO1FBQ3ZCLElBQUksRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDL0IsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3pCLGFBQWEsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMvQixRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDeEIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJO0tBQ3hCLENBQUMsQ0FBQTtJQUVGLE1BQU07UUFDSixNQUFNLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDeEcsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLEVBQUMsUUFBUSxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUMvRCxNQUFNLElBQUksR0FBRyxTQUFTLElBQUksU0FBUyxDQUFBO1FBRW5DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLG9HQUFvRztRQUNwRyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFDOUIsQ0FBQztRQUNILENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO1FBRXpCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFDOUIsQ0FBQztRQUNILENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO1FBRXpCLHNHQUFzRztRQUN0RyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDZixDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFbkIsT0FBTyxDQUNMLE1BQUMsV0FBVyxDQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsSUFBSSxhQUM5QixRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUs7b0JBQ25CLGtCQUFVLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLE9BQU8sWUFDbEUsUUFBUSxHQUNKLEVBRVIsUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQ3ZCLENBQ3hCLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBWSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDbkIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRWxCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ3ZCLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQTtBQUVILE9BQU8sRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBGb3JtRGF0YU9iamVjdGl6ZXIgZnJvbSBcImZvcm0tZGF0YS1vYmplY3RpemVyXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcblxuY29uc3QgRm9ybUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCB1c2VGb3JtID0gKCkgPT4gdXNlQ29udGV4dChGb3JtQ29udGV4dClcblxuY2xhc3MgRm9ybUlucHV0cyB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5pbnB1dHMgPSB7fVxuICAgIHRoaXMub25TdWJtaXQgPSBwcm9wcz8ub25TdWJtaXRcbiAgfVxuXG4gIGFzT2JqZWN0KCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9XG4gICAgY29uc3QgZm9ybURhdGFPYmplY3RpemVyID0gbmV3IEZvcm1EYXRhT2JqZWN0aXplcigpXG5cbiAgICBmb3IoY29uc3Qga2V5IGluIHRoaXMuaW5wdXRzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuaW5wdXRzW2tleV1cblxuICAgICAgZm9ybURhdGFPYmplY3RpemVyLnRyZWF0SW5pdGlhbChrZXksIHZhbHVlLCByZXN1bHQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZ2V0VmFsdWUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLmlucHV0c1tuYW1lXVxuICB9XG5cbiAgc2V0VmFsdWUobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihcIiduYW1lJyBpcyByZXF1aXJlZFwiKVxuXG4gICAgdGhpcy5pbnB1dHNbbmFtZV0gPSB2YWx1ZVxuICB9XG5cbiAgdW5zZXRWYWx1ZShuYW1lKSB7XG4gICAgaWYgKCFuYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCInbmFtZScgaXMgcmVxdWlyZWRcIilcblxuICAgIGRlbGV0ZSB0aGlzLmlucHV0c1tuYW1lXVxuICB9XG5cbiAgc2V0VmFsdWVXaXRoSGlkZGVuKG5hbWUsIHZhbHVlKSB7XG4gICAgdGhpcy5zZXRWYWx1ZShuYW1lLCB2YWx1ZSlcblxuICAgIGlmIChQbGF0Zm9ybS5PUyA9PSBcIndlYlwiKSB7XG4gICAgICByZXR1cm4gPGlucHV0IG5hbWU9e25hbWV9IHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT17dmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogXCJcIn0gLz5cbiAgICB9XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYgKHRoaXMub25TdWJtaXQpIHtcbiAgICAgIHRoaXMub25TdWJtaXQoKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBGb3JtID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBGb3JtIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gICAgZm9ybTogUHJvcFR5cGVzLmluc3RhbmNlT2YoRm9ybUlucHV0cyksXG4gICAgZm9ybU9iamVjdFJlZjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBmb3JtUmVmOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGh0bWxGb3JtUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNldEZvcm06IFByb3BUeXBlcy5mdW5jXG4gIH0pXG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjaGlsZHJlbiwgZm9ybTogZ2l2ZW5Gb3JtLCBmb3JtT2JqZWN0UmVmLCBmb3JtUmVmLCBodG1sRm9ybVByb3BzLCBvblN1Ym1pdCwgc2V0Rm9ybX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgbG9jYWxGb3JtID0gdXNlTWVtbygoKSA9PiBuZXcgRm9ybUlucHV0cyh7b25TdWJtaXR9KSwgW10pXG4gICAgY29uc3QgZm9ybSA9IGdpdmVuRm9ybSB8fCBsb2NhbEZvcm1cblxuICAgIGZvcm0ub25TdWJtaXQgPSBvblN1Ym1pdFxuXG4gICAgLy8gS2VlcCBmb3JtIHJlZnMvc3RhdGUgdXBkYXRlcyBpbiBlZmZlY3RzIHNvIGNvbnN1bWVycyBkbyBub3QgdHJpZ2dlciBwYXJlbnQgdXBkYXRlcyBkdXJpbmcgcmVuZGVyLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoZm9ybU9iamVjdFJlZikge1xuICAgICAgICBmb3JtT2JqZWN0UmVmLmN1cnJlbnQgPSBmb3JtXG4gICAgICB9XG4gICAgfSwgW2Zvcm0sIGZvcm1PYmplY3RSZWZdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb3JtT2JqZWN0UmVmKSB7XG4gICAgICAgIGZvcm1PYmplY3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICB9LCBbZm9ybSwgZm9ybU9iamVjdFJlZl0pXG5cbiAgICAvLyBQcm9wYWdhdGUgdGhlIHN0YWJsZSBmb3JtIGluc3RhbmNlIGFmdGVyIGNvbW1pdCBzbyBTaGFwZUNvbXBvbmVudCBwYXJlbnRzIHN0YXkgb24gdGhlIG1vdW50ZWQgcGF0aC5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHNldEZvcm0pIHtcbiAgICAgICAgc2V0Rm9ybShmb3JtKVxuICAgICAgfVxuICAgIH0sIFtmb3JtLCBzZXRGb3JtXSlcblxuICAgIHJldHVybiAoXG4gICAgICA8Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2Zvcm19PlxuICAgICAgICB7UGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIiAmJlxuICAgICAgICAgIDxmb3JtIHsuLi5odG1sRm9ybVByb3BzfSBvblN1Ym1pdD17dGhpcy50dC5vbkZvcm1TdWJtaXR9IHJlZj17Zm9ybVJlZn0+XG4gICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgPC9mb3JtPlxuICAgICAgICB9XG4gICAgICAgIHtQbGF0Zm9ybS5PUyAhPSBcIndlYlwiICYmIHRoaXMucHJvcHMuY2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfVxuXG4gIG9uRm9ybVN1Ym1pdCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBpZiAodGhpcy5wcm9wcy5vblN1Ym1pdCkge1xuICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdCgpXG4gICAgfVxuICB9XG59KSlcblxuZXhwb3J0IHtGb3JtLCBGb3JtQ29udGV4dCwgRm9ybUlucHV0cywgdXNlRm9ybX1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"/src/","sources":["router/route.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"/src/","sources":["router/route.jsx"],"names":[],"mappings":";AAaA,yDAAmD;AACnD,8CAAwC;mBAXG,UAAU;AAYrD,gCAAiD;AAEjD,yBAqRG;kBArSiF,OAAO"}
|
package/build/router/route.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/* eslint-disable react/jsx-max-depth, sort-imports */
|
|
3
|
-
import React, { createContext, useContext, useMemo } from "react";
|
|
3
|
+
import React, { createContext, useContext, useEffect, useLayoutEffect, useMemo } from "react";
|
|
4
4
|
import { shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
5
5
|
import Switch, { CurrentSwitchContext } from "./switch";
|
|
6
|
+
import { arrayDifferent, simpleObjectDifferent } from "set-state-compare/build/diff-utils.js";
|
|
6
7
|
import BaseComponent from "../base-component";
|
|
7
8
|
import PropTypes from "prop-types";
|
|
8
9
|
import memo from "set-state-compare/build/memo.js";
|
|
@@ -30,6 +31,9 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
30
31
|
path: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)])
|
|
31
32
|
});
|
|
32
33
|
match = null;
|
|
34
|
+
loadComponentRequestId = 0;
|
|
35
|
+
componentPathParts = [];
|
|
36
|
+
lastMatchUpdate = 0;
|
|
33
37
|
newParams = null;
|
|
34
38
|
pathParts = null;
|
|
35
39
|
setup() {
|
|
@@ -58,11 +62,11 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
58
62
|
}
|
|
59
63
|
return this.routeParts.slice(this.pathParts.length, this.routeParts.length);
|
|
60
64
|
}, [givenRoute].concat(this.pathParts));
|
|
61
|
-
this.useStates({ Component: null, componentNotFound: null, matches: false });
|
|
62
|
-
|
|
65
|
+
this.useStates({ Component: null, componentNotFound: null, lastMatchUpdate: 0, matches: false });
|
|
66
|
+
useLayoutEffect(() => {
|
|
63
67
|
this.loadMatches();
|
|
64
68
|
}, [givenRoute, path, pathsMatched]);
|
|
65
|
-
|
|
69
|
+
useEffect(() => {
|
|
66
70
|
if (this.hasSwitchMatch() && !this.s.Component && this.s.matches) {
|
|
67
71
|
if (this.props.onMatch) {
|
|
68
72
|
this.props.onMatch();
|
|
@@ -71,6 +75,9 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
71
75
|
this.loadComponent();
|
|
72
76
|
}
|
|
73
77
|
}
|
|
78
|
+
return () => {
|
|
79
|
+
this.loadComponentRequestId += 1;
|
|
80
|
+
};
|
|
74
81
|
}, [path, pathShown, this.s.matches]);
|
|
75
82
|
}
|
|
76
83
|
hasSwitchMatch = () => this.switchGroup.s.pathShown && this.switchGroup.s.pathShown == this.pathId();
|
|
@@ -138,17 +145,49 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
138
145
|
componentPathParts.push(component);
|
|
139
146
|
}
|
|
140
147
|
const newParams = Object.assign({}, this.currentParams, params); // eslint-disable-line prefer-object-spread
|
|
141
|
-
this.
|
|
142
|
-
this.setState({ matches });
|
|
148
|
+
this.updateRouteMatchState({ componentPathParts, match: { params }, matches, newParams });
|
|
143
149
|
this.switchGroup?.setPathMatched(matchId, true);
|
|
144
150
|
}
|
|
145
151
|
else {
|
|
146
|
-
this.
|
|
147
|
-
this.setState({ matches });
|
|
152
|
+
this.updateRouteMatchState({ componentPathParts: null, match: null, matches, newParams: null });
|
|
148
153
|
this.switchGroup?.setPathMatched(matchId, false);
|
|
149
154
|
}
|
|
150
155
|
}
|
|
156
|
+
updateRouteMatchState({ componentPathParts, match, matches, newParams }) {
|
|
157
|
+
const routeDataChanged = this.routeDataChanged({ componentPathParts, match, newParams });
|
|
158
|
+
this.setInstance({ componentPathParts, match, newParams });
|
|
159
|
+
if (routeDataChanged || this.s.matches != matches) {
|
|
160
|
+
this.setState({
|
|
161
|
+
lastMatchUpdate: routeDataChanged ? this.lastMatchUpdate += 1 : this.s.lastMatchUpdate,
|
|
162
|
+
matches
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
routeDataChanged({ componentPathParts, match, newParams }) {
|
|
167
|
+
const currentComponentPathParts = this.componentPathParts || null;
|
|
168
|
+
const currentMatchParams = this.match?.params || null;
|
|
169
|
+
const nextMatchParams = match?.params || null;
|
|
170
|
+
const componentPathPartsChanged = this.nullableArrayDifferent(currentComponentPathParts, componentPathParts);
|
|
171
|
+
const matchChanged = this.nullableObjectDifferent(currentMatchParams, nextMatchParams);
|
|
172
|
+
const newParamsChanged = this.nullableObjectDifferent(this.newParams, newParams);
|
|
173
|
+
return componentPathPartsChanged || matchChanged || newParamsChanged;
|
|
174
|
+
}
|
|
175
|
+
nullableArrayDifferent(value, nextValue) {
|
|
176
|
+
if (value === null || nextValue === null) {
|
|
177
|
+
return value != nextValue;
|
|
178
|
+
}
|
|
179
|
+
return arrayDifferent(value, nextValue);
|
|
180
|
+
}
|
|
181
|
+
nullableObjectDifferent(value, nextValue) {
|
|
182
|
+
if (value === null || nextValue === null) {
|
|
183
|
+
return value != nextValue;
|
|
184
|
+
}
|
|
185
|
+
return simpleObjectDifferent(value, nextValue, true);
|
|
186
|
+
}
|
|
151
187
|
async loadComponent() {
|
|
188
|
+
// Ignore late async route-component loads after a route switch or discarded mount.
|
|
189
|
+
const requestId = this.loadComponentRequestId + 1;
|
|
190
|
+
this.loadComponentRequestId = requestId;
|
|
152
191
|
const actualComponentPath = this.props.componentPath || this.tt.componentPathParts.join("/");
|
|
153
192
|
let Component;
|
|
154
193
|
this.log(() => ["loadComponent", { componentPath: this.props.componentPath, componentPathParts: this.componentPathParts, actualComponentPath }]);
|
|
@@ -160,6 +199,8 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
160
199
|
console.error(`Couldn't find component: ${actualComponentPath}`);
|
|
161
200
|
throw error;
|
|
162
201
|
}
|
|
202
|
+
if (requestId != this.loadComponentRequestId)
|
|
203
|
+
return;
|
|
163
204
|
this.setState({ Component, componentNotFound: !Component });
|
|
164
205
|
}
|
|
165
206
|
log(callbackArgs) {
|
|
@@ -191,4 +232,4 @@ const Route = memo(shapeComponent(class Route extends BaseComponent {
|
|
|
191
232
|
}));
|
|
192
233
|
export { RequireComponentContext, RouteContext, Switch, useParams };
|
|
193
234
|
export default Route;
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInJvdXRlci9yb3V0ZS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEtBQUssRUFBRSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQy9ELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RSxPQUFPLE1BQU0sRUFBRSxFQUFDLG9CQUFvQixFQUFDLE1BQU0sVUFBVSxDQUFBO0FBQ3JELE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdkMsTUFBTSx1QkFBdUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBTSxTQUFRLGFBQWE7SUFDakUsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixLQUFLLEVBQUUsS0FBSztRQUNaLFFBQVEsRUFBRSxLQUFLO1FBQ2YsYUFBYSxFQUFFLElBQUk7S0FDcEIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLFFB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QVEsSUFBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFDbkQsS0FBQyxhQUFhLENBQUMsUUFBUSxJQUFDLEtBQUssRUFBRSxTQUFTLFlBQ3RDLE1BQUMsTUFBTSxJQUFDLElBQUksRUFBRSxlQUFlLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLGFBQy9DLFNBQVMsSUFBSSxLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLEVBQ3hDLFFBQVEsSUFDRixHQUNjLEdBQ0gsR0FDSSxDQUMvQixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUE7QUFDakUsZUFBZSxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbWF4LWRlcHRoLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBTd2l0Y2gsIHtDdXJyZW50U3dpdGNoQ29udGV4dH0gZnJvbSBcIi4vc3dpdGNoXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG4ubWpzXCJcblxuY29uc3QgQ3VycmVudFBhdGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChbXSlcbmNvbnN0IFBhcmFtc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9KVxuY29uc3QgUmVxdWlyZUNvbXBvbmVudENvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCBSb3V0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCB1c2VQYXJhbXMgPSAoKSA9PiB1c2VDb250ZXh0KFBhcmFtc0NvbnRleHQpXG5cbmNvbnN0IFJvdXRlID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBSb3V0ZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGV4YWN0OiBmYWxzZSxcbiAgICBmYWxsYmFjazogZmFsc2UsXG4gICAgaW5jbHVkZUluUGF0aDogdHJ1ZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tcG9uZW50UGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmYWxsYmFjazogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpbmNsdWRlSW5QYXRoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5pbnN0YW5jZU9mKFJlZ0V4cCldKVxuICB9KVxuXG4gIG1hdGNoID0gbnVsbFxuICBuZXdQYXJhbXMgPSBudWxsXG4gIHBhdGhQYXJ0cyA9IG51bGxcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnJvdXRlci5yb3V0ZVwifSlcbiAgICBjb25zdCB7cGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3BhdGhzTWF0Y2hlZCwgc3dpdGNoR3JvdXB9ID0gdXNlQ29udGV4dChDdXJyZW50U3dpdGNoQ29udGV4dClcbiAgICBjb25zdCBnaXZlblJvdXRlID0gdXNlQ29udGV4dChSb3V0ZUNvbnRleHQpXG4gICAgY29uc3Qge3BhdGhTaG93bn0gPSBzd2l0Y2hHcm91cC5zXG5cbiAgICB0aGlzLmRlYnVnID0gZmFsc2VcbiAgICB0aGlzLmxvZygoKSA9PiAoe2dpdmVuUm91dGV9KSlcbiAgICB0aGlzLnQgPSB0XG5cbiAgICB0aGlzLnJlcXVpcmVDb21wb25lbnQgPSB1c2VDb250ZXh0KFJlcXVpcmVDb21wb25lbnRDb250ZXh0KVxuICAgIHRoaXMuY3VycmVudFBhcmFtcyA9IHVzZUNvbnRleHQoUGFyYW1zQ29udGV4dClcbiAgICB0aGlzLmN1cnJlbnRQYXRoID0gdXNlQ29udGV4dChDdXJyZW50UGF0aENvbnRleHQpXG4gICAgdGhpcy5zd2l0Y2hHcm91cCA9IHN3aXRjaEdyb3VwXG4gICAgdGhpcy5yb3V0ZVBhcnRzID0gdXNlTWVtbygoKSA9PiBnaXZlblJvdXRlPy5zcGxpdChcIi9cIiksIFtwYXRoLCBnaXZlblJvdXRlXSlcbiAgICB0aGlzLnBhdGhQYXJ0cyA9IHVzZU1lbW8oKCkgPT4gcGF0aD8uc3BsaXQoXCIvXCIpLCBbcGF0aF0pXG5cbiAgICB0aGlzLm5ld1JvdXRlUGFydHMgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICBpZiAoZ2l2ZW5Sb3V0ZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVQYXJ0c1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlUGFydHMuc2xpY2UodGhpcy5wYXRoUGFydHMubGVuZ3RoLCB0aGlzLnJvdXRlUGFydHMubGVuZ3RoKVxuICAgICAgfSxcbiAgICAgIFtnaXZlblJvdXRlXS5jb25jYXQodGhpcy5wYXRoUGFydHMpXG4gICAgKVxuXG4gICAgdGhpcy51c2VTdGF0ZXMoe0NvbXBvbmVudDogbnVsbCwgY29tcG9uZW50Tm90Rm91bmQ6IG51bGwsIG1hdGNoZXM6IGZhbHNlfSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTWF0Y2hlcygpXG4gICAgfSwgW2dpdmVuUm91dGUsIHBhdGgsIHBhdGhzTWF0Y2hlZF0pXG5cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhhc1N3aXRjaE1hdGNoKCkgJiYgIXRoaXMucy5Db21wb25lbnQgJiYgdGhpcy5zLm1hdGNoZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMub25NYXRjaCkge1xuICAgICAgICAgIHRoaXMucHJvcHMub25NYXRjaCgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMucHJvcHMuY2hpbGRyZW4gJiYgKHRoaXMucHJvcHMucGF0aCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGgpKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQ29tcG9uZW50KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtwYXRoLCBwYXRoU2hvd24sIHRoaXMucy5tYXRjaGVzXSlcbiAgfVxuXG4gIGhhc1N3aXRjaE1hdGNoID0gKCkgPT4gdGhpcy5zd2l0Y2hHcm91cC5zLnBhdGhTaG93biAmJiB0aGlzLnN3aXRjaEdyb3VwLnMucGF0aFNob3duID09IHRoaXMucGF0aElkKClcblxuICBwYXRoSWQoKSB7XG4gICAgY29uc3Qge2ZhbGxiYWNrfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBsZXQgcGF0aElkXG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHBhdGhJZCA9IFwiW0ZBTExCQUNLXVwiXG4gICAgfSBlbHNlIGlmIChwYXRoKSB7XG4gICAgICBwYXRoSWQgPSBwYXRoXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGhJZCA9IFwiW1BBVEgtRU1QVFldXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aElkXG4gIH1cblxuICBsb2FkTWF0Y2hlcygpIHtcbiAgICBjb25zdCB7bmV3Um91dGVQYXJ0cywgdH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge2NvbXBvbmVudCwgcGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2V4YWN0LCBpbmNsdWRlSW5QYXRoLCBmYWxsYmFja30gPSB0aGlzLnBcblxuICAgIGxldCBtYXRjaGVzID0gdHJ1ZVxuICAgIGNvbnN0IHBhcmFtcyA9IHt9XG4gICAgY29uc3QgY29tcG9uZW50UGF0aFBhcnRzID0gWy4uLnRoaXMuY3VycmVudFBhdGhdXG5cbiAgICB0aGlzLmxvZygoKSA9PiBbdGhpcy5wcm9wcy5wYXRoLCBcIlN0YXJ0IGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyldKVxuXG4gICAgZm9yIChjb25zdCBwYXRoUGFydEluZGV4IGluIHRoaXMucGF0aFBhcnRzKSB7XG4gICAgICBjb25zdCBwYXRoUGFydCA9IHRoaXMucGF0aFBhcnRzW3BhdGhQYXJ0SW5kZXhdXG4gICAgICBjb25zdCB0cmFuc2xhdGVkUGF0aFBhcnQgPSB0KGByb3V0ZXMuJHtwYXRoUGFydH1gLCB7ZGVmYXVsdFZhbHVlOiBwYXRoUGFydH0pXG5cbiAgICAgIGlmICghKHBhdGhQYXJ0SW5kZXggaW4gdGhpcy5yb3V0ZVBhcnRzKSkge1xuICAgICAgICB0aGlzLmxvZygoKSA9PiBgTm8gbWF0Y2ggZm9yOiAke3BhdGhQYXJ0SW5kZXh9YClcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvdXRlUGFydCA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJvdXRlUGFydHNbcGF0aFBhcnRJbmRleF0pXG5cbiAgICAgIGlmIChwYXRoUGFydC5zdGFydHNXaXRoKFwiOlwiKSAmJiByb3V0ZVBhcnQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aFBhcnQuc2xpY2UoMSwgcGF0aFBhcnQubGVuZ3RoKVxuXG4gICAgICAgIHBhcmFtc1twYXJhbU5hbWVdID0gcm91dGVQYXJ0XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZWRQYXRoUGFydCAhPSByb3V0ZVBhcnQpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKCFjb21wb25lbnQgJiYgaW5jbHVkZUluUGF0aCkge1xuICAgICAgICBjb21wb25lbnRQYXRoUGFydHMucHVzaChwYXRoUGFydClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhhY3QgJiYgbmV3Um91dGVQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvZygoKSA9PiBbXCJFeGFjdCBhbmQgbW9yZSByb3V0ZSBwYXJ0c1wiLCB7bmV3Um91dGVQYXJ0cywgcGF0aFBhcnRzOiB0aGlzLnBhdGhQYXJ0cywgcm91dGVQYXJ0czogdGhpcy5yb3V0ZVBhcnRzfV0pXG4gICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKG1hdGNoZXMgJiYgcGF0aCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVQYXJ0cy5sZW5ndGggPT0gMCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaElkID0gdGhpcy5wYXRoSWQoKVxuXG4gICAgaWYgKCFtYXRjaGVzICYmIGZhbGxiYWNrKSB7XG4gICAgICBtYXRjaGVzID0gdHJ1ZVxuICAgIH1cblxuICAgIHRoaXMubG9nKCgpID0+IFt0aGlzLnByb3BzLnBhdGgsIFwiRW5kIGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyksIHttYXRjaGVzfV0pXG5cbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgaWYgKGNvbXBvbmVudCAmJiBpbmNsdWRlSW5QYXRoKSB7XG4gICAgICAgIGNvbXBvbmVudFBhdGhQYXJ0cy5wdXNoKGNvbXBvbmVudClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXJyZW50UGFyYW1zLCBwYXJhbXMpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcblxuICAgICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaDoge3BhcmFtc30sIG5ld1BhcmFtc30pXG4gICAgICB0aGlzLnNldFN0YXRlKHttYXRjaGVzfSlcbiAgICAgIHRoaXMuc3dpdGNoR3JvdXA/LnNldFBhdGhNYXRjaGVkKG1hdGNoSWQsIHRydWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0SW5zdGFuY2Uoe2NvbXBvbmVudFBhdGhQYXJ0czogbnVsbCwgbWF0Y2g6IG51bGwsIG5ld1BhcmFtczogbnVsbH0pXG4gICAgICB0aGlzLnNldFN0YXRlKHttYXRjaGVzfSlcbiAgICAgIHRoaXMuc3dpdGNoR3JvdXA/LnNldFBhdGhNYXRjaGVkKG1hdGNoSWQsIGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRDb21wb25lbnQoKSB7XG4gICAgY29uc3QgYWN0dWFsQ29tcG9uZW50UGF0aCA9IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCB8fCB0aGlzLnR0LmNvbXBvbmVudFBhdGhQYXJ0cy5qb2luKFwiL1wiKVxuICAgIGxldCBDb21wb25lbnRcblxuICAgIHRoaXMubG9nKCgpID0+IFtcImxvYWRDb21wb25lbnRcIiwge2NvbXBvbmVudFBhdGg6IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCwgY29tcG9uZW50UGF0aFBhcnRzOiB0aGlzLmNvbXBvbmVudFBhdGhQYXJ0cywgYWN0dWFsQ29tcG9uZW50UGF0aH1dKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEltcG9ydCA9IGF3YWl0IHRoaXMudHQucmVxdWlyZUNvbXBvbmVudCh7cm91dGVEZWZpbml0aW9uOiB7Y29tcG9uZW50OiBhY3R1YWxDb21wb25lbnRQYXRofX0pXG5cbiAgICAgIENvbXBvbmVudCA9IGNvbXBvbmVudEltcG9ydFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDb3VsZG4ndCBmaW5kIGNvbXBvbmVudDogJHthY3R1YWxDb21wb25lbnRQYXRofWApXG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZDogIUNvbXBvbmVudH0pXG4gIH1cblxuICBsb2coY2FsbGJhY2tBcmdzKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGxldCBhcmdzID0gY2FsbGJhY2tBcmdzKClcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSBhcmdzID0gW2FyZ3NdXG5cbiAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoLCBuZXdQYXJhbXMsIG5ld1JvdXRlUGFydHN9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtjaGlsZHJlbiwgY29tcG9uZW50LCBwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZCwgbWF0Y2hlc30gPSB0aGlzLnNcblxuICAgIGlmICghbWF0Y2hlcyB8fCAhdGhpcy5oYXNTd2l0Y2hNYXRjaCgpKSB7XG4gICAgICAvLyBSb3V0ZSBpc24ndCBtYXRjaGluZyBhbmQgc2hvdWxkbid0IGJlIHJlbmRlcmVkIGF0IGFsbC5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFDb21wb25lbnQgJiYgIWNoaWxkcmVuICYmICFjb21wb25lbnROb3RGb3VuZCkge1xuICAgICAgLy8gUm91dGUgaXMgbWF0Y2hpbmcgYnV0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtcIkxvYWRpbmcgXCJ9XG4gICAgICAgICAge2NvbXBvbmVudCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGggfHwgY29tcG9uZW50UGF0aFBhcnRzLmpvaW4oXCIvXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIUNvbXBvbmVudCAmJiAhY2hpbGRyZW4gJiYgY29tcG9uZW50Tm90Rm91bmQpIHtcbiAgICAgIC8vIERvbid0IHJlbmRlciBhbnl0aGluZyBpZiB0aGUgY29tcG9uZW50IGNvdWxkbid0IGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEN1cnJlbnRQYXRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29tcG9uZW50UGF0aFBhcnRzfT5cbiAgICAgICAgPFJvdXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmV3Um91dGVQYXJ0cy5qb2luKFwiL1wiKX0+XG4gICAgICAgICAgPFBhcmFtc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25ld1BhcmFtc30+XG4gICAgICAgICAgICA8U3dpdGNoIG5hbWU9e2Byb3V0ZS1ncm91cC0ke3BhdGh9YH0gc2luZ2xlPXtmYWxzZX0+XG4gICAgICAgICAgICAgIHtDb21wb25lbnQgJiYgPENvbXBvbmVudCBtYXRjaD17bWF0Y2h9IC8+fVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICA8L1BhcmFtc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvUm91dGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9DdXJyZW50UGF0aENvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuICB9XG59KSlcblxuZXhwb3J0IHtSZXF1aXJlQ29tcG9uZW50Q29udGV4dCwgUm91dGVDb250ZXh0LCBTd2l0Y2gsIHVzZVBhcmFtc31cbmV4cG9ydCBkZWZhdWx0IFJvdXRlXG4iXX0=
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInJvdXRlci9yb3V0ZS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEtBQUssRUFBRSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDM0YsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sTUFBTSxFQUFFLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxVQUFVLENBQUE7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFBO0FBQzNGLE9BQU8sYUFBYSxNQUFNLG1CQUFtQixDQUFBO0FBQzdDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUM1QyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdkMsTUFBTSx1QkFBdUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUVqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBTSxTQUFRLGFBQWE7SUFDakUsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixLQUFLLEVBQUUsS0FBSztRQUNaLFFBQVEsRUFBRSxLQUFL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LElBQUksRUFBRSxlQUFlLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLGFBQy9DLFNBQVMsSUFBSSxLQUFDLFNBQVMsSUFBQyxLQUFLLEVBQUUsS0FBSyxHQUFJLEVBQ3hDLFFBQVEsSUFDRixHQUNjLEdBQ0gsR0FDSSxDQUMvQixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBO0FBRUgsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUE7QUFDakUsZUFBZSxLQUFLLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtbWF4LWRlcHRoLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgU3dpdGNoLCB7Q3VycmVudFN3aXRjaENvbnRleHR9IGZyb20gXCIuL3N3aXRjaFwiXG5pbXBvcnQge2FycmF5RGlmZmVyZW50LCBzaW1wbGVPYmplY3REaWZmZXJlbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9kaWZmLXV0aWxzLmpzXCJcbmltcG9ydCBCYXNlQ29tcG9uZW50IGZyb20gXCIuLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG4ubWpzXCJcblxuY29uc3QgQ3VycmVudFBhdGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dChbXSlcbmNvbnN0IFBhcmFtc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9KVxuY29uc3QgUmVxdWlyZUNvbXBvbmVudENvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCBSb3V0ZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpXG5jb25zdCB1c2VQYXJhbXMgPSAoKSA9PiB1c2VDb250ZXh0KFBhcmFtc0NvbnRleHQpXG5cbmNvbnN0IFJvdXRlID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBSb3V0ZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGV4YWN0OiBmYWxzZSxcbiAgICBmYWxsYmFjazogZmFsc2UsXG4gICAgaW5jbHVkZUluUGF0aDogdHJ1ZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29tcG9uZW50UGF0aDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGFjdDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBmYWxsYmFjazogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBpbmNsdWRlSW5QYXRoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9uTWF0Y2g6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5pbnN0YW5jZU9mKFJlZ0V4cCldKVxuICB9KVxuXG4gIG1hdGNoID0gbnVsbFxuICBsb2FkQ29tcG9uZW50UmVxdWVzdElkID0gMFxuICBjb21wb25lbnRQYXRoUGFydHMgPSBbXVxuICBsYXN0TWF0Y2hVcGRhdGUgPSAwXG4gIG5ld1BhcmFtcyA9IG51bGxcbiAgcGF0aFBhcnRzID0gbnVsbFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIucm91dGVyLnJvdXRlXCJ9KVxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cGF0aHNNYXRjaGVkLCBzd2l0Y2hHcm91cH0gPSB1c2VDb250ZXh0KEN1cnJlbnRTd2l0Y2hDb250ZXh0KVxuICAgIGNvbnN0IGdpdmVuUm91dGUgPSB1c2VDb250ZXh0KFJvdXRlQ29udGV4dClcbiAgICBjb25zdCB7cGF0aFNob3dufSA9IHN3aXRjaEdyb3VwLnNcblxuICAgIHRoaXMuZGVidWcgPSBmYWxzZVxuICAgIHRoaXMubG9nKCgpID0+ICh7Z2l2ZW5Sb3V0ZX0pKVxuICAgIHRoaXMudCA9IHRcblxuICAgIHRoaXMucmVxdWlyZUNvbXBvbmVudCA9IHVzZUNvbnRleHQoUmVxdWlyZUNvbXBvbmVudENvbnRleHQpXG4gICAgdGhpcy5jdXJyZW50UGFyYW1zID0gdXNlQ29udGV4dChQYXJhbXNDb250ZXh0KVxuICAgIHRoaXMuY3VycmVudFBhdGggPSB1c2VDb250ZXh0KEN1cnJlbnRQYXRoQ29udGV4dClcbiAgICB0aGlzLnN3aXRjaEdyb3VwID0gc3dpdGNoR3JvdXBcbiAgICB0aGlzLnJvdXRlUGFydHMgPSB1c2VNZW1vKCgpID0+IGdpdmVuUm91dGU/LnNwbGl0KFwiL1wiKSwgW3BhdGgsIGdpdmVuUm91dGVdKVxuICAgIHRoaXMucGF0aFBhcnRzID0gdXNlTWVtbygoKSA9PiBwYXRoPy5zcGxpdChcIi9cIiksIFtwYXRoXSlcblxuICAgIHRoaXMubmV3Um91dGVQYXJ0cyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghcGF0aCkge1xuICAgICAgICAgIGlmIChnaXZlblJvdXRlID09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZVBhcnRzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVQYXJ0cy5zbGljZSh0aGlzLnBhdGhQYXJ0cy5sZW5ndGgsIHRoaXMucm91dGVQYXJ0cy5sZW5ndGgpXG4gICAgICB9LFxuICAgICAgW2dpdmVuUm91dGVdLmNvbmNhdCh0aGlzLnBhdGhQYXJ0cylcbiAgICApXG5cbiAgICB0aGlzLnVzZVN0YXRlcyh7Q29tcG9uZW50OiBudWxsLCBjb21wb25lbnROb3RGb3VuZDogbnVsbCwgbGFzdE1hdGNoVXBkYXRlOiAwLCBtYXRjaGVzOiBmYWxzZX0pXG5cbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkTWF0Y2hlcygpXG4gICAgfSwgW2dpdmVuUm91dGUsIHBhdGgsIHBhdGhzTWF0Y2hlZF0pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzU3dpdGNoTWF0Y2goKSAmJiAhdGhpcy5zLkNvbXBvbmVudCAmJiB0aGlzLnMubWF0Y2hlcykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbk1hdGNoKSB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbk1hdGNoKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5jaGlsZHJlbiAmJiAodGhpcy5wcm9wcy5wYXRoIHx8IHRoaXMucHJvcHMuY29tcG9uZW50IHx8IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCkpIHtcbiAgICAgICAgICB0aGlzLmxvYWRDb21wb25lbnQoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRDb21wb25lbnRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFtwYXRoLCBwYXRoU2hvd24sIHRoaXMucy5tYXRjaGVzXSlcbiAgfVxuXG4gIGhhc1N3aXRjaE1hdGNoID0gKCkgPT4gdGhpcy5zd2l0Y2hHcm91cC5zLnBhdGhTaG93biAmJiB0aGlzLnN3aXRjaEdyb3VwLnMucGF0aFNob3duID09IHRoaXMucGF0aElkKClcblxuICBwYXRoSWQoKSB7XG4gICAgY29uc3Qge2ZhbGxiYWNrfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwYXRofSA9IHRoaXMucHJvcHNcbiAgICBsZXQgcGF0aElkXG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHBhdGhJZCA9IFwiW0ZBTExCQUNLXVwiXG4gICAgfSBlbHNlIGlmIChwYXRoKSB7XG4gICAgICBwYXRoSWQgPSBwYXRoXG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGhJZCA9IFwiW1BBVEgtRU1QVFldXCJcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aElkXG4gIH1cblxuICBsb2FkTWF0Y2hlcygpIHtcbiAgICBjb25zdCB7bmV3Um91dGVQYXJ0cywgdH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge2NvbXBvbmVudCwgcGF0aH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2V4YWN0LCBpbmNsdWRlSW5QYXRoLCBmYWxsYmFja30gPSB0aGlzLnBcblxuICAgIGxldCBtYXRjaGVzID0gdHJ1ZVxuICAgIGNvbnN0IHBhcmFtcyA9IHt9XG4gICAgY29uc3QgY29tcG9uZW50UGF0aFBhcnRzID0gWy4uLnRoaXMuY3VycmVudFBhdGhdXG5cbiAgICB0aGlzLmxvZygoKSA9PiBbdGhpcy5wcm9wcy5wYXRoLCBcIlN0YXJ0IGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyldKVxuXG4gICAgZm9yIChjb25zdCBwYXRoUGFydEluZGV4IGluIHRoaXMucGF0aFBhcnRzKSB7XG4gICAgICBjb25zdCBwYXRoUGFydCA9IHRoaXMucGF0aFBhcnRzW3BhdGhQYXJ0SW5kZXhdXG4gICAgICBjb25zdCB0cmFuc2xhdGVkUGF0aFBhcnQgPSB0KGByb3V0ZXMuJHtwYXRoUGFydH1gLCB7ZGVmYXVsdFZhbHVlOiBwYXRoUGFydH0pXG5cbiAgICAgIGlmICghKHBhdGhQYXJ0SW5kZXggaW4gdGhpcy5yb3V0ZVBhcnRzKSkge1xuICAgICAgICB0aGlzLmxvZygoKSA9PiBgTm8gbWF0Y2ggZm9yOiAke3BhdGhQYXJ0SW5kZXh9YClcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJvdXRlUGFydCA9IGRlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJvdXRlUGFydHNbcGF0aFBhcnRJbmRleF0pXG5cbiAgICAgIGlmIChwYXRoUGFydC5zdGFydHNXaXRoKFwiOlwiKSAmJiByb3V0ZVBhcnQpIHtcbiAgICAgICAgY29uc3QgcGFyYW1OYW1lID0gcGF0aFBhcnQuc2xpY2UoMSwgcGF0aFBhcnQubGVuZ3RoKVxuXG4gICAgICAgIHBhcmFtc1twYXJhbU5hbWVdID0gcm91dGVQYXJ0XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZWRQYXRoUGFydCAhPSByb3V0ZVBhcnQpIHtcbiAgICAgICAgbWF0Y2hlcyA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2UgaWYgKCFjb21wb25lbnQgJiYgaW5jbHVkZUluUGF0aCkge1xuICAgICAgICBjb21wb25lbnRQYXRoUGFydHMucHVzaChwYXRoUGFydClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXhhY3QgJiYgbmV3Um91dGVQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmxvZygoKSA9PiBbXCJFeGFjdCBhbmQgbW9yZSByb3V0ZSBwYXJ0c1wiLCB7bmV3Um91dGVQYXJ0cywgcGF0aFBhcnRzOiB0aGlzLnBhdGhQYXJ0cywgcm91dGVQYXJ0czogdGhpcy5yb3V0ZVBhcnRzfV0pXG4gICAgICBtYXRjaGVzID0gZmFsc2VcbiAgICB9IGVsc2UgaWYgKG1hdGNoZXMgJiYgcGF0aCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHRoaXMucm91dGVQYXJ0cy5sZW5ndGggPT0gMCkge1xuICAgICAgbWF0Y2hlcyA9IHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaElkID0gdGhpcy5wYXRoSWQoKVxuXG4gICAgaWYgKCFtYXRjaGVzICYmIGZhbGxiYWNrKSB7XG4gICAgICBtYXRjaGVzID0gdHJ1ZVxuICAgIH1cblxuICAgIHRoaXMubG9nKCgpID0+IFt0aGlzLnByb3BzLnBhdGgsIFwiRW5kIGdlbmVyYXRpbmcgY29tcG9uZW50IHBhdGhzXCIsIEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudFBhdGhQYXJ0cyksIHttYXRjaGVzfV0pXG5cbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgaWYgKGNvbXBvbmVudCAmJiBpbmNsdWRlSW5QYXRoKSB7XG4gICAgICAgIGNvbXBvbmVudFBhdGhQYXJ0cy5wdXNoKGNvbXBvbmVudClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3UGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jdXJyZW50UGFyYW1zLCBwYXJhbXMpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcblxuICAgICAgdGhpcy51cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0cywgbWF0Y2g6IHtwYXJhbXN9LCBtYXRjaGVzLCBuZXdQYXJhbXN9KVxuICAgICAgdGhpcy5zd2l0Y2hHcm91cD8uc2V0UGF0aE1hdGNoZWQobWF0Y2hJZCwgdHJ1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0czogbnVsbCwgbWF0Y2g6IG51bGwsIG1hdGNoZXMsIG5ld1BhcmFtczogbnVsbH0pXG4gICAgICB0aGlzLnN3aXRjaEdyb3VwPy5zZXRQYXRoTWF0Y2hlZChtYXRjaElkLCBmYWxzZSlcbiAgICB9XG4gIH1cblxuICB1cGRhdGVSb3V0ZU1hdGNoU3RhdGUoe2NvbXBvbmVudFBhdGhQYXJ0cywgbWF0Y2gsIG1hdGNoZXMsIG5ld1BhcmFtc30pIHtcbiAgICBjb25zdCByb3V0ZURhdGFDaGFuZ2VkID0gdGhpcy5yb3V0ZURhdGFDaGFuZ2VkKHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoLCBuZXdQYXJhbXN9KVxuXG4gICAgdGhpcy5zZXRJbnN0YW5jZSh7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zfSlcbiAgICBpZiAocm91dGVEYXRhQ2hhbmdlZCB8fCB0aGlzLnMubWF0Y2hlcyAhPSBtYXRjaGVzKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgbGFzdE1hdGNoVXBkYXRlOiByb3V0ZURhdGFDaGFuZ2VkID8gdGhpcy5sYXN0TWF0Y2hVcGRhdGUgKz0gMSA6IHRoaXMucy5sYXN0TWF0Y2hVcGRhdGUsXG4gICAgICAgIG1hdGNoZXNcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcm91dGVEYXRhQ2hhbmdlZCh7Y29tcG9uZW50UGF0aFBhcnRzLCBtYXRjaCwgbmV3UGFyYW1zfSkge1xuICAgIGNvbnN0IGN1cnJlbnRDb21wb25lbnRQYXRoUGFydHMgPSB0aGlzLmNvbXBvbmVudFBhdGhQYXJ0cyB8fCBudWxsXG4gICAgY29uc3QgY3VycmVudE1hdGNoUGFyYW1zID0gdGhpcy5tYXRjaD8ucGFyYW1zIHx8IG51bGxcbiAgICBjb25zdCBuZXh0TWF0Y2hQYXJhbXMgPSBtYXRjaD8ucGFyYW1zIHx8IG51bGxcbiAgICBjb25zdCBjb21wb25lbnRQYXRoUGFydHNDaGFuZ2VkID0gdGhpcy5udWxsYWJsZUFycmF5RGlmZmVyZW50KGN1cnJlbnRDb21wb25lbnRQYXRoUGFydHMsIGNvbXBvbmVudFBhdGhQYXJ0cylcbiAgICBjb25zdCBtYXRjaENoYW5nZWQgPSB0aGlzLm51bGxhYmxlT2JqZWN0RGlmZmVyZW50KGN1cnJlbnRNYXRjaFBhcmFtcywgbmV4dE1hdGNoUGFyYW1zKVxuICAgIGNvbnN0IG5ld1BhcmFtc0NoYW5nZWQgPSB0aGlzLm51bGxhYmxlT2JqZWN0RGlmZmVyZW50KHRoaXMubmV3UGFyYW1zLCBuZXdQYXJhbXMpXG5cbiAgICByZXR1cm4gY29tcG9uZW50UGF0aFBhcnRzQ2hhbmdlZCB8fCBtYXRjaENoYW5nZWQgfHwgbmV3UGFyYW1zQ2hhbmdlZFxuICB9XG5cbiAgbnVsbGFibGVBcnJheURpZmZlcmVudCh2YWx1ZSwgbmV4dFZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IG5leHRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG5leHRWYWx1ZVxuICAgIH1cblxuICAgIHJldHVybiBhcnJheURpZmZlcmVudCh2YWx1ZSwgbmV4dFZhbHVlKVxuICB9XG5cbiAgbnVsbGFibGVPYmplY3REaWZmZXJlbnQodmFsdWUsIG5leHRWYWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCBuZXh0VmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBuZXh0VmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gc2ltcGxlT2JqZWN0RGlmZmVyZW50KHZhbHVlLCBuZXh0VmFsdWUsIHRydWUpXG4gIH1cblxuICBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIC8vIElnbm9yZSBsYXRlIGFzeW5jIHJvdXRlLWNvbXBvbmVudCBsb2FkcyBhZnRlciBhIHJvdXRlIHN3aXRjaCBvciBkaXNjYXJkZWQgbW91bnQuXG4gICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5sb2FkQ29tcG9uZW50UmVxdWVzdElkICsgMVxuXG4gICAgdGhpcy5sb2FkQ29tcG9uZW50UmVxdWVzdElkID0gcmVxdWVzdElkXG4gICAgY29uc3QgYWN0dWFsQ29tcG9uZW50UGF0aCA9IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCB8fCB0aGlzLnR0LmNvbXBvbmVudFBhdGhQYXJ0cy5qb2luKFwiL1wiKVxuICAgIGxldCBDb21wb25lbnRcblxuICAgIHRoaXMubG9nKCgpID0+IFtcImxvYWRDb21wb25lbnRcIiwge2NvbXBvbmVudFBhdGg6IHRoaXMucHJvcHMuY29tcG9uZW50UGF0aCwgY29tcG9uZW50UGF0aFBhcnRzOiB0aGlzLmNvbXBvbmVudFBhdGhQYXJ0cywgYWN0dWFsQ29tcG9uZW50UGF0aH1dKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEltcG9ydCA9IGF3YWl0IHRoaXMudHQucmVxdWlyZUNvbXBvbmVudCh7cm91dGVEZWZpbml0aW9uOiB7Y29tcG9uZW50OiBhY3R1YWxDb21wb25lbnRQYXRofX0pXG5cbiAgICAgIENvbXBvbmVudCA9IGNvbXBvbmVudEltcG9ydFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBDb3VsZG4ndCBmaW5kIGNvbXBvbmVudDogJHthY3R1YWxDb21wb25lbnRQYXRofWApXG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLmxvYWRDb21wb25lbnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZDogIUNvbXBvbmVudH0pXG4gIH1cblxuICBsb2coY2FsbGJhY2tBcmdzKSB7XG4gICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgIGxldCBhcmdzID0gY2FsbGJhY2tBcmdzKClcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSBhcmdzID0gW2FyZ3NdXG5cbiAgICAgIGNvbnNvbGUubG9nKC4uLmFyZ3MpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb21wb25lbnRQYXRoUGFydHMsIG1hdGNoLCBuZXdQYXJhbXMsIG5ld1JvdXRlUGFydHN9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtjaGlsZHJlbiwgY29tcG9uZW50LCBwYXRofSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7Q29tcG9uZW50LCBjb21wb25lbnROb3RGb3VuZCwgbWF0Y2hlc30gPSB0aGlzLnNcblxuICAgIGlmICghbWF0Y2hlcyB8fCAhdGhpcy5oYXNTd2l0Y2hNYXRjaCgpKSB7XG4gICAgICAvLyBSb3V0ZSBpc24ndCBtYXRjaGluZyBhbmQgc2hvdWxkbid0IGJlIHJlbmRlcmVkIGF0IGFsbC5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKCFDb21wb25lbnQgJiYgIWNoaWxkcmVuICYmICFjb21wb25lbnROb3RGb3VuZCkge1xuICAgICAgLy8gUm91dGUgaXMgbWF0Y2hpbmcgYnV0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIHtcIkxvYWRpbmcgXCJ9XG4gICAgICAgICAge2NvbXBvbmVudCB8fCB0aGlzLnByb3BzLmNvbXBvbmVudFBhdGggfHwgY29tcG9uZW50UGF0aFBhcnRzLmpvaW4oXCIvXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIUNvbXBvbmVudCAmJiAhY2hpbGRyZW4gJiYgY29tcG9uZW50Tm90Rm91bmQpIHtcbiAgICAgIC8vIERvbid0IHJlbmRlciBhbnl0aGluZyBpZiB0aGUgY29tcG9uZW50IGNvdWxkbid0IGJlIGZvdW5kLlxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEN1cnJlbnRQYXRoQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29tcG9uZW50UGF0aFBhcnRzfT5cbiAgICAgICAgPFJvdXRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bmV3Um91dGVQYXJ0cy5qb2luKFwiL1wiKX0+XG4gICAgICAgICAgPFBhcmFtc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e25ld1BhcmFtc30+XG4gICAgICAgICAgICA8U3dpdGNoIG5hbWU9e2Byb3V0ZS1ncm91cC0ke3BhdGh9YH0gc2luZ2xlPXtmYWxzZX0+XG4gICAgICAgICAgICAgIHtDb21wb25lbnQgJiYgPENvbXBvbmVudCBtYXRjaD17bWF0Y2h9IC8+fVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICA8L1BhcmFtc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvUm91dGVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9DdXJyZW50UGF0aENvbnRleHQuUHJvdmlkZXI+XG4gICAgKVxuICB9XG59KSlcblxuZXhwb3J0IHtSZXF1aXJlQ29tcG9uZW50Q29udGV4dCwgUm91dGVDb250ZXh0LCBTd2l0Y2gsIHVzZVBhcmFtc31cbmV4cG9ydCBkZWZhdWx0IFJvdXRlXG4iXX0=
|