@datagrok/eda 1.1.9 → 1.1.10
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/.eslintignore +1 -0
- package/.eslintrc.json +45 -0
- package/dist/42.js +2 -0
- package/dist/729.js +1 -1
- package/dist/943.js +2 -2
- package/dist/package-test.js +2 -2
- package/dist/package.js +2 -2
- package/package.json +7 -3
- package/src/data-generators.ts +13 -13
- package/src/eda-tools.ts +42 -42
- package/src/eda-ui.ts +65 -58
- package/src/package-test.ts +2 -2
- package/src/package.ts +52 -60
- package/src/stat-tools.ts +72 -61
- package/src/svm.ts +144 -151
- package/src/utils.ts +13 -17
- package/src/workers/tsne-worker.ts +6 -6
- package/src/workers/umap-worker.ts +3 -3
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
src/**/*.d.ts*
|
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"env": {
|
|
3
|
+
"browser": true,
|
|
4
|
+
"es2022": true
|
|
5
|
+
},
|
|
6
|
+
"extends": [
|
|
7
|
+
"google"
|
|
8
|
+
],
|
|
9
|
+
"parser": "@typescript-eslint/parser",
|
|
10
|
+
"parserOptions": {
|
|
11
|
+
"ecmaVersion": 12,
|
|
12
|
+
"sourceType": "module"
|
|
13
|
+
},
|
|
14
|
+
"plugins": [
|
|
15
|
+
"@typescript-eslint"
|
|
16
|
+
],
|
|
17
|
+
"rules": {
|
|
18
|
+
"no-unused-vars": "off",
|
|
19
|
+
"@typescript-eslint/no-unused-vars": ["warn", { "varsIgnorePattern": "^(_|ui$|grok$|DG$)", "argsIgnorePattern": "^_"}],
|
|
20
|
+
"indent": [
|
|
21
|
+
"error",
|
|
22
|
+
2
|
|
23
|
+
],
|
|
24
|
+
"max-len": [
|
|
25
|
+
"error",
|
|
26
|
+
120
|
|
27
|
+
],
|
|
28
|
+
"require-jsdoc": "off",
|
|
29
|
+
"valid-jsdoc": "off",
|
|
30
|
+
"spaced-comment": "off",
|
|
31
|
+
"linebreak-style": "off",
|
|
32
|
+
"curly": [
|
|
33
|
+
"error",
|
|
34
|
+
"multi-or-nest"
|
|
35
|
+
],
|
|
36
|
+
"brace-style": [
|
|
37
|
+
"error",
|
|
38
|
+
"1tbs",
|
|
39
|
+
{
|
|
40
|
+
"allowSingleLine": true
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"block-spacing": 2
|
|
44
|
+
}
|
|
45
|
+
}
|
package/dist/42.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var eda;(()=>{var r,e,t={5042:()=>{}},o={};function a(r){var e=o[r];if(void 0!==e)return e.exports;var n=o[r]={id:r,loaded:!1,exports:{}};return t[r].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var r=a.O(void 0,[483,352,943],(()=>a(4943)));return a.O(r)},a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},r=[],a.O=(e,t,o,n)=>{if(!t){var i=1/0;for(s=0;s<r.length;s++){for(var[t,o,n]=r[s],c=!0,l=0;l<t.length;l++)(!1&n||i>=n)&&Object.keys(a.O).every((r=>a.O[r](t[l])))?t.splice(l--,1):(c=!1,n<i&&(i=n));if(c){r.splice(s--,1);var p=o();void 0!==p&&(e=p)}}return e}n=n||0;for(var s=r.length;s>0&&r[s-1][2]>n;s--)r[s]=r[s-1];r[s]=[t,o,n]},a.n=r=>{var e=r&&r.__esModule?()=>r.default:()=>r;return a.d(e,{a:e}),e},a.d=(r,e)=>{for(var t in e)a.o(e,t)&&!a.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:e[t]})},a.f={},a.e=r=>Promise.all(Object.keys(a.f).reduce(((e,t)=>(a.f[t](r,e),e)),[])),a.u=r=>r+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(r){if("object"==typeof window)return window}}(),a.o=(r,e)=>Object.prototype.hasOwnProperty.call(r,e),a.nmd=r=>(r.paths=[],r.children||(r.children=[]),r),(()=>{var r;a.g.importScripts&&(r=a.g.location+"");var e=a.g.document;if(!r&&e&&(e.currentScript&&(r=e.currentScript.src),!r)){var t=e.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!r;)r=t[o--].src}if(!r)throw new Error("Automatic publicPath is not supported in this browser");r=r.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=r})(),(()=>{a.b=self.location+"";var r={42:1};a.f.i=(e,t)=>{r[e]||importScripts(a.p+a.u(e))};var e=self.webpackChunkeda=self.webpackChunkeda||[],t=e.push.bind(e);e.push=e=>{var[o,n,i]=e;for(var c in n)a.o(n,c)&&(a.m[c]=n[c]);for(i&&i(a);o.length;)r[o.pop()]=1;t(e)}})(),e=a.x,a.x=()=>Promise.all([483,352,943].map(a.e,a)).then(e);var n=a.x();eda=n})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QSxFQUFtQkUsS0F2QkNFLElBQ25CLElBQUs5RCxFQUFVK0QsRUFBYUMsR0FBV0YsRUFDdkMsSUFBSSxJQUFJL0UsS0FBWWdGLEVBQ2hCakYsRUFBb0J1QyxFQUFFMEMsRUFBYWhGLEtBQ3JDRCxFQUFvQlUsRUFBRVQsR0FBWWdGLEVBQVloRixJQUloRCxJQURHaUYsR0FBU0EsRUFBUWxGLEdBQ2RrQixFQUFTTSxRQUNkbUQsRUFBZ0J6RCxFQUFTaUUsT0FBUyxFQUNuQ04sRUFBMkJHLEVBQUssQyxLWm5CN0JsRixFQUFPRSxFQUFvQlcsRUFDL0JYLEVBQW9CVyxFQUFJLElBQ2hCbUMsUUFBUUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLcUMsSUFBSXBGLEVBQW9CNEMsRUFBRzVDLElBQXNCcUYsS0FBS3ZGLEdhRHhGLElBQUljLEVBQXNCWixFQUFvQlcsSSIsInNvdXJjZXMiOlsid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvYW1kIGRlZmluZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbNDgzLDM1Miw5NDNdLm1hcChfX3dlYnBhY2tfcmVxdWlyZV9fLmUsIF9fd2VicGFja19yZXF1aXJlX18pKS50aGVuKG5leHQpO1xufTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFs0ODMsMzUyLDk0M10sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5NDMpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZEQgPSBmdW5jdGlvbiAoKSB7XG5cdHRocm93IG5ldyBFcnJvcignZGVmaW5lIGNhbm5vdCBiZSB1c2VkIGluZGlyZWN0Jyk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uYW1kTyA9IHt9OyIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5ubWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdHJldHVybiBtb2R1bGU7XG59OyIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ0MjogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhbGwiLCJtIiwieCIsIl9fd2VicGFja19leHBvcnRzX18iLCJPIiwiYW1kRCIsIkVycm9yIiwiYW1kTyIsInJlc3VsdCIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImZ1bGZpbGxlZCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwibiIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkIiwiYSIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImUiLCJjaHVua0lkIiwiUHJvbWlzZSIsImFsbCIsInJlZHVjZSIsInByb21pc2VzIiwidSIsImciLCJnbG9iYWxUaGlzIiwidGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5Iiwibm1kIiwicGF0aHMiLCJjaGlsZHJlbiIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJwIiwiYiIsInNlbGYiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsInB1c2giLCJiaW5kIiwiZGF0YSIsIm1vcmVNb2R1bGVzIiwicnVudGltZSIsInBvcCIsIm1hcCIsInRoZW4iXSwic291cmNlUm9vdCI6IiJ9
|
package/dist/729.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var eda;(()=>{"use strict";var t,s,e={7659:(t,s,e)=>{s.Z=void 0;var i=e(6215);Object.defineProperty(s,"Z",{enumerable:!0,get:function(){return i.TSNE}})},6215:(t,s)=>{Object.defineProperty(s,"__esModule",{value:!0}),s.TSNE=void 0,s.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,s){if(!t)throw s||"Assertion failed"}getopt(t,s,e){return t.hasOwnProperty(s)?t[s]:e}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,s=2*Math.random()-1,e=t*t+s*s;if(0===e||e>1)return this.gaussRandom();const i=Math.sqrt(-2*Math.log(e)/e);return this.vValue=s*i,this.returnV=!0,t*i}randn(t,s){return t+this.gaussRandom()*s}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const s=new Array(t);for(let e=0;e<t;e++)s[e]=0;return s}return new Float64Array(t)}randn2d(t,s,e){const i=void 0!==e,o=[];for(let r=0;r<t;r++){const t=[];for(let o=0;o<s;o++)i?t.push(e):t.push(this.randn(0,1e-4));o.push(t)}return o}L2(t,s){const e=t.length;let i=0;for(let o=0;o<e;o++){const e=t[o],r=s[o];i+=(e-r)*(e-r)}return i}xtod(t){const s=t.length,e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=this.L2(t[i],t[o]);e[i*s+o]=r,e[o*s+i]=r}return e}d2p(t,s,e){const i=Math.sqrt(t.length),o=Math.floor(i);this.assert(o===i,"D should have square number of elements.");const r=Math.log(s),n=this.zeros(o*o),h=this.zeros(o);for(let s=0;s<o;s++){let i=-1/0,a=1/0,l=1,c=!1;const d=50;let u=0;for(;!c;){let n=0;for(let e=0;e<o;e++){let i=Math.exp(-t[s*o+e]*l);s===e&&(i=0),h[e]=i,n+=i}let f=0;for(let t=0;t<o;t++){let s;s=0===n?0:h[t]/n,h[t]=s,s>1e-7&&(f-=s*Math.log(s))}f>r?(i=l,a===1/0?l*=2:l=(l+a)/2):(a=l,i===-1/0?l/=2:l=(l+i)/2),u++,Math.abs(f-r)<e&&(c=!0),u>=d&&(c=!0)}for(let t=0;t<o;t++)n[s*o+t]=h[t]}const a=this.zeros(o*o),l=2*o;for(let t=0;t<o;t++)for(let s=0;s<o;s++)a[t*o+s]=Math.max((n[t*o+s]+n[s*o+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const s=t.length,e=t[0].length;this.assert(s>0," X is empty? You must have some data!"),this.assert(e>0," X[0] is empty? Where is the data?");const i=this.xtod(t);this.P=this.d2p(i,this.perplexity,1e-4),this.N=s,this.initSolution()}initDataDist(t){const s=t.length;this.assert(s>0," X is empty? You must have some data!");const e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=t[i][o];e[i*s+o]=r,e[o*s+i]=r}this.P=this.d2p(e,this.perplexity,1e-4),this.N=s,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,s=this.costGrad(this.Y),e=s.cost,i=s.grad,o=this.zeros(this.dim);for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const e=i[s][t],r=this.ystep[s][t],n=this.gains[s][t];let h=this.sign(e)===this.sign(r)?.8*n:n+.2;h<.01&&(h=.01),this.gains[s][t]=h;const a=(this.iter<250?.5:.8)*r-this.epsilon*h*i[s][t];this.ystep[s][t]=a,this.Y[s][t]+=a,o[t]+=this.Y[s][t]}for(let s=0;s<t;s++)for(let e=0;e<this.dim;e++)this.Y[s][e]-=o[e]/t;return e}debugGrad(){const t=this.N,s=this.costGrad(this.Y),e=(s.cost,s.grad),i=1e-5;for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const o=this.Y[s][t];this.Y[s][t]=o+i;const r=this.costGrad(this.Y);this.Y[s][t]=o-i;const n=this.costGrad(this.Y),h=e[s][t],a=(r.cost-n.cost)/(2*i);console.log(s+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[s][t]=o}}costGrad(t){const s=this.N,e=this.dim,i=this.P,o=this.iter<100?4:1,r=this.zeros(s*s);let n=0;for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){let h=0;for(let s=0;s<e;s++){const e=t[i][s]-t[o][s];h+=e*e}const a=1/(1+h);r[i*s+o]=a,r[o*s+i]=a,n+=2*a}const h=s*s,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(r[t]/n,1e-100);let l=0;const c=[];for(let n=0;n<s;n++){const h=new Array(e);for(let t=0;t<e;t++)h[t]=0;for(let c=0;c<s;c++){l+=-i[n*s+c]*Math.log(a[n*s+c]);const d=4*(o*i[n*s+c]-a[n*s+c])*r[n*s+c];for(let s=0;s<e;s++)h[s]+=d*(t[n][s]-t[c][s])}c.push(h)}return{cost:l,grad:c}}}}},i={};t=function t(s){var o=i[s];if(void 0!==o)return o.exports;var r=i[s]={exports:{}};return e[s](r,r.exports,t),r.exports}(7659),s=function(t,s,e,i){return new(e||(e=Promise))((function(o,r){function n(t){try{a(i.next(t))}catch(t){r(t)}}function h(t){try{a(i.throw(t))}catch(t){r(t)}}function a(t){var s;t.done?o(t.value):(s=t.value,s instanceof e?s:new e((function(t){t(s)}))).then(n,h)}a((i=i.apply(t,s||[])).next())}))},onmessage=function(e){return s(this,void 0,void 0,(function*(){const s=new t.Z({epsilon:e.data.options.learningRate,perplexity:e.data.options.perplexity,dim:e.data.options.components});s.initDataRaw(e.data.data);const i=e.data.options.iterations;for(let t=0;t<i;++t)s.step();postMessage({embeddings:s.getSolution()})}))},eda={}})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxRixTQUFTaUMsRUFBU3BJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFpQixNQUFFOUgsR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUM3RixTQUFTWixFQUFLOEMsR0FKbEIsSUFBZXJJLEVBSWFxSSxFQUFPbEUsS0FBTzZELEVBQVFLLEVBQU9ySSxRQUoxQ0EsRUFJeURxSSxFQUFPckksTUFKaERBLGFBQWlCNkQsRUFBSTdELEVBQVEsSUFBSTZELEdBQUUsU0FBVW1FLEdBQVdBLEVBQVFoSSxFQUFRLEtBSWpCc0ksS0FBS0osRUFBV0UsRUFBVyxDQUM3RzdDLEdBQU11QyxFQUFZQSxFQUFVUyxNQUFNWCxFQUFTQyxHQUFjLEtBQUtNLE9BQ2xFLEdBQ0osRUFFQUssVUFBWSxTQUFVQyxHQUNsQixPQUFPakosRUFBVVcsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXVJLEVBQU8sSUFBSSxJQUFLLENBQ2xCaEksUUFBUytILEVBQUlFLEtBQUtDLFFBQVFDLGFBQzFCdEksV0FBWWtJLEVBQUlFLEtBQUtDLFFBQVFySSxXQUM3QkUsSUFBS2dJLEVBQUlFLEtBQUtDLFFBQVFFLGFBRTFCSixFQUFLM0QsWUFBWTBELEVBQUlFLEtBQUtBLE1BQzFCLE1BQU1JLEVBQVlOLEVBQUlFLEtBQUtDLFFBQVFJLFdBQ25DLElBQUssSUFBSTdHLEVBQUksRUFBR0EsRUFBSTRHLElBQWE1RyxFQUM3QnVHLEVBQUtuRCxPQUNUMEQsWUFBWSxDQUFFLFdBQWNQLEVBQUtwRCxlQUNyQyxHQUNKLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9zcmMvd29ya2Vycy90c25lLXdvcmtlci50cyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtlciBmb3IgdGhlIG1ldGhvZCB0LVNORVxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHNuZSA9IG5ldyBUU05FKHtcbiAgICAgICAgICAgIGVwc2lsb246IGV2dC5kYXRhLm9wdGlvbnMubGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgcGVycGxleGl0eTogZXZ0LmRhdGEub3B0aW9ucy5wZXJwbGV4aXR5LFxuICAgICAgICAgICAgZGltOiBldnQuZGF0YS5vcHRpb25zLmNvbXBvbmVudHNcbiAgICAgICAgfSk7XG4gICAgICAgIHRzbmUuaW5pdERhdGFSYXcoZXZ0LmRhdGEuZGF0YSk7XG4gICAgICAgIGNvbnN0IGl0ZXJDb3VudCA9IGV2dC5kYXRhLm9wdGlvbnMuaXRlcmF0aW9ucztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyQ291bnQ7ICsraSlcbiAgICAgICAgICAgIHRzbmUuc3RlcCgpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogdHNuZS5nZXRTb2x1dGlvbigpIH0pO1xuICAgIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xudmFyIHRzbmVfMSA9IHJlcXVpcmUoXCIuL3RzbmVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUU05FXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0c25lXzEuVFNORTsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xuY2xhc3MgVFNORSB7XG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG4gICAgICAgIC8vIHJldHVybiAwIG1lYW4gdW5pdCBzdGFuZGFyZCBkZXZpYXRpb24gcmFuZG9tIG51bWJlclxuICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSAwLjA7XG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgICAgIG9wdCA9IG9wdCB8fCB7fTtcbiAgICAgICAgdGhpcy5wZXJwbGV4aXR5ID0gdGhpcy5nZXRvcHQob3B0LCAncGVycGxleGl0eScsIDMwKTsgLy8gZWZmZWN0aXZlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9yc1xuICAgICAgICB0aGlzLmRpbSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2RpbScsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgICAgIHRoaXMuZXBzaWxvbiA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2Vwc2lsb24nLCAxMCk7IC8vIGxlYXJuaW5nIHJhdGVcbiAgICB9XG4gICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbWVzc2FnZSB8fCAnQXNzZXJ0aW9uIGZhaWxlZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3ludGF4IHN1Z2FyXG4gICAgZ2V0b3B0KG9wdCwgZmllbGQsIGRlZmF1bHR2YWwpIHtcbiAgICAgICAgaWYgKG9wdC5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRbZmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHR2YWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2F1c3NSYW5kb20oKSB7XG4gICAgICAgIGlmICh0aGlzLnJldHVyblYpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuViA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudlZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHYgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHIgPSB1ICogdSArIHYgKiB2O1xuICAgICAgICBpZiAociA9PT0gMCB8fCByID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2F1c3NSYW5kb20oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjID0gTWF0aC5zcXJ0KC0yICogTWF0aC5sb2cocikgLyByKTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSB2ICogYzsgLy8gY2FjaGUgdGhpcyBmb3IgbmV4dCBmdW5jdGlvbiBjYWxsIGZvciBlZmZpY2llbmN5XG4gICAgICAgIHRoaXMucmV0dXJuViA9IHRydWU7XG4gICAgICAgIHJldHVybiB1ICogYztcbiAgICB9XG4gICAgLy8gcmV0dXJuIHJhbmRvbSBub3JtYWwgbnVtYmVyXG4gICAgcmFuZG4obXUsIHN0ZCkgeyByZXR1cm4gbXUgKyB0aGlzLmdhdXNzUmFuZG9tKCkgKiBzdGQ7IH1cbiAgICAvLyB1dGlsaXRpdHkgdGhhdCBjcmVhdGVzIGNvbnRpZ3VvdXMgdmVjdG9yIG9mIHplcm9zIG9mIHNpemUgblxuICAgIHplcm9zKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobikgPT09ICd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGFycltpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkobik7IC8vIHR5cGVkIGFycmF5cyBhcmUgZmFzdGVyXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdXRpbGl0eSB0aGF0IHJldHVybnMgMmQgYXJyYXkgZmlsbGVkIHdpdGggcmFuZG9tIG51bWJlcnNcbiAgICAvLyBvciB3aXRoIHZhbHVlIHMsIGlmIHByb3ZpZGVkXG4gICAgcmFuZG4yZChuLCBkLCBzKSB7XG4gICAgICAgIGNvbnN0IHVzZXMgPSB0eXBlb2YgcyAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IHggPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhoZXJlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGQ7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh1c2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHhoZXJlLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHRoaXMucmFuZG4oMC4wLCAxZS00KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeC5wdXNoKHhoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBMMiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAgTDIoeDEsIHgyKSB7XG4gICAgICAgIGNvbnN0IEQgPSB4MS5sZW5ndGg7XG4gICAgICAgIGxldCBkID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBEOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHgxaSA9IHgxW2ldO1xuICAgICAgICAgICAgY29uc3QgeDJpID0geDJbaV07XG4gICAgICAgICAgICBkICs9ICh4MWkgLSB4MmkpICogKHgxaSAtIHgyaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgcGFpcndpc2UgZGlzdGFuY2UgaW4gYWxsIHZlY3RvcnMgaW4gWFxuICAgIHh0b2QoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpc3QgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuTDIoWFtpXSwgWFtqXSk7XG4gICAgICAgICAgICAgICAgZGlzdFtpICogTiArIGpdID0gZDtcbiAgICAgICAgICAgICAgICBkaXN0W2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXN0O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIChwX3tpfGp9ICsgcF97anxpfSkvKDJuKVxuICAgIGQycChELCBwZXJwbGV4aXR5LCB0b2wpIHtcbiAgICAgICAgY29uc3QgbmYgPSBNYXRoLnNxcnQoRC5sZW5ndGgpOyAvLyB0aGlzIGJldHRlciBiZSBhbiBpbnRlZ2VyXG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLmZsb29yKG5mKTtcbiAgICAgICAgdGhpcy5hc3NlcnQobiA9PT0gbmYsICdEIHNob3VsZCBoYXZlIHNxdWFyZSBudW1iZXIgb2YgZWxlbWVudHMuJyk7XG4gICAgICAgIGNvbnN0IGhUYXJnZXQgPSBNYXRoLmxvZyhwZXJwbGV4aXR5KTsgLy8gdGFyZ2V0IGVudHJvcHkgb2YgZGlzdHJpYnV0aW9uXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLnplcm9zKG4gKiBuKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuICAgICAgICBjb25zdCBwcm93ID0gdGhpcy56ZXJvcyhuKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgbGV0IGJldGFtaW4gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YW1heCA9IEluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGEgPSAxOyAvLyBpbml0aWFsIHZhbHVlIG9mIHByZWNpc2lvblxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1heHRyaWVzID0gNTA7XG4gICAgICAgICAgICAvLyBwZXJmb3JtIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHByZWNpc2lvbiBiZXRhXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSBlbnRyb3B5IG9mIHRoZSBkaXN0cmlidXRpb24gaXMgYXBwcm9wcmlhdGVcbiAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGVudHJvcHkgYW5kIGtlcm5lbCByb3cgd2l0aCBiZXRhIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIGxldCBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaiA9IE1hdGguZXhwKC1EW2kgKiBuICsgal0gKiBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyB3ZSBkb250IGNhcmUgYWJvdXQgZGlhZ29uYWxzXG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBwajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIHAgYW5kIGNvbXB1dGUgZW50cm9weVxuICAgICAgICAgICAgICAgIGxldCBuSGVyZSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwc3VtID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IHByb3dbal0gLyBwc3VtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBqID4gMWUtNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbkhlcmUgLT0gcGogKiBNYXRoLmxvZyhwaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYWRqdXN0IGJldGEgYmFzZWQgb24gcmVzdWx0XG4gICAgICAgICAgICAgICAgaWYgKG5IZXJlID4gaFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlbnRyb3B5IHdhcyB0b28gaGlnaCAoZGlzdHJpYnV0aW9uIHRvbyBkaWZmdXNlKVxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gZm9yIG1vcmUgcGVha3kgZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJldGFtaW4gPSBiZXRhOyAvLyBtb3ZlIHVwIHRoZSBib3VuZHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtYXggPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAqIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gKGJldGEgKyBiZXRhbWF4KSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgICAgICAgICAgICBiZXRhbWF4ID0gYmV0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtaW4gPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHN0b3BwaW5nIGNvbmRpdGlvbnM6IHRvbyBtYW55IHRyaWVzIG9yIGdvdCBhIGdvb2QgcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgbnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5IZXJlIC0gaFRhcmdldCkgPCB0b2wpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChudW0gPj0gbWF4dHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGEgcG9pbnQgJyArIGkgKyAnIGdldHMgcHJlY2lzaW9uICcgKyBiZXRhICsgJyBhZnRlciAnICsgbnVtICsgJyBiaW5hcnkgc2VhcmNoIHN0ZXBzLicpO1xuICAgICAgICAgICAgLy8gY29weSBvdmVyIHRoZSBmaW5hbCBwcm93IHRvIFAgYXQgcm93IGlcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgUFtpICogbiArIGpdID0gcHJvd1tqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBlbmQgbG9vcCBvdmVyIGV4YW1wbGVzIGlcbiAgICAgICAgLy8gc3ltbWV0cml6ZSBQIGFuZCBub3JtYWxpemUgaXQgdG8gc3VtIHRvIDEgb3ZlciBhbGwgaWpcbiAgICAgICAgY29uc3QgcE91dCA9IHRoaXMuemVyb3MobiAqIG4pO1xuICAgICAgICBjb25zdCBOMiA9IG4gKiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBwT3V0W2kgKiBuICsgal0gPSBNYXRoLm1heCgoUFtpICogbiArIGpdICsgUFtqICogbiArIGldKSAvIE4yLCAxZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwT3V0O1xuICAgIH1cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb25cbiAgICBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNldCBvZiBoaWdoLWRpbWVuc2lvbmFsIHBvaW50c1xuICAgIC8vIGFuZCBjcmVhdGVzIG1hdHJpeCBQIGZyb20gdGhlbSB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICBpbml0RGF0YVJhdyhYKSB7XG4gICAgICAgIGNvbnN0IE4gPSBYLmxlbmd0aDtcbiAgICAgICAgY29uc3QgRCA9IFhbMF0ubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgdGhpcy5hc3NlcnQoRCA+IDAsICcgWFswXSBpcyBlbXB0eT8gV2hlcmUgaXMgdGhlIGRhdGE/Jyk7XG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy54dG9kKFgpOyAvLyBjb252ZXJ0IFggdG8gZGlzdGFuY2VzIHVzaW5nIGdhdXNzaWFuIGtlcm5lbFxuICAgICAgICB0aGlzLlAgPSB0aGlzLmQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTsgLy8gYXR0YWNoIHRvIG9iamVjdFxuICAgICAgICB0aGlzLk4gPSBOOyAvLyBiYWNrIHVwIHRoZSBzaXplIG9mIHRoZSBkYXRhc2V0XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgZ2l2ZW4gZGlzdGFuY2UgbWF0cml4IGFuZCBjcmVhdGVzXG4gICAgLy8gbWF0cml4IFAgZnJvbSB0aGVtLlxuICAgIC8vIEQgaXMgYXNzdW1lZCB0byBiZSBwcm92aWRlZCBhcyBhIGxpc3Qgb2YgbGlzdHMsIGFuZCBzaG91bGQgYmUgc3ltbWV0cmljXG4gICAgaW5pdERhdGFEaXN0KEQpIHtcbiAgICAgICAgY29uc3QgTiA9IEQubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgLy8gY29udmVydCBEIHRvIGEgKGZhc3QpIHR5cGVkIGFycmF5IHZlcnNpb25cbiAgICAgICAgY29uc3QgZGlzdHMgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IERbaV1bal07XG4gICAgICAgICAgICAgICAgZGlzdHNbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdHNbaiAqIE4gKyBpXSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7XG4gICAgICAgIHRoaXMuTiA9IE47XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyAocmUpaW5pdGlhbGl6ZXMgdGhlIHNvbHV0aW9uIHRvIHJhbmRvbVxuICAgIGluaXRTb2x1dGlvbigpIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgcmFuZG9tIHNvbHV0aW9uIHRvIHQtU05FXG4gICAgICAgIHRoaXMuWSA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltKTsgLy8gdGhlIHNvbHV0aW9uXG4gICAgICAgIHRoaXMuZ2FpbnMgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMS4wKTsgLy8gc3RlcCBnYWlucyB0byBhY2NlbGVyYXRlIHByb2dyZXNzIGluIHVuY2hhbmdpbmcgZGlyZWN0aW9uc1xuICAgICAgICB0aGlzLnlzdGVwID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDAuMCk7IC8vIG1vbWVudHVtIGFjY3VtdWxhdG9yXG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgfVxuICAgIC8vIHJldHVybiBwb2ludGVyIHRvIGN1cnJlbnQgc29sdXRpb25cbiAgICBnZXRTb2x1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuWTtcbiAgICB9XG4gICAgLy8gcGVyZm9ybSBhIHNpbmdsZSBzdGVwIG9mIG9wdGltaXphdGlvbiB0byBpbXByb3ZlIHRoZSBlbWJlZGRpbmdcbiAgICBzdGVwKCkge1xuICAgICAgICB0aGlzLml0ZXIgKz0gMTtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIGNvbnN0IGNvc3QgPSBjZy5jb3N0O1xuICAgICAgICBjb25zdCBncmFkID0gY2cuZ3JhZDtcbiAgICAgICAgLy8gcGVyZm9ybSBncmFkaWVudCBzdGVwXG4gICAgICAgIGNvbnN0IHltZWFuID0gdGhpcy56ZXJvcyh0aGlzLmRpbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnaWQgPSBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZCA9IHRoaXMueXN0ZXBbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ2FpbmlkID0gdGhpcy5nYWluc1tpXVtkXTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGdhaW4gdXBkYXRlXG4gICAgICAgICAgICAgICAgbGV0IG5ld2dhaW4gPSB0aGlzLnNpZ24oZ2lkKSA9PT0gdGhpcy5zaWduKHNpZCkgPyBnYWluaWQgKiAwLjggOiBnYWluaWQgKyAwLjI7XG4gICAgICAgICAgICAgICAgaWYgKG5ld2dhaW4gPCAwLjAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld2dhaW4gPSAwLjAxO1xuICAgICAgICAgICAgICAgIH0gLy8gY2xhbXBcbiAgICAgICAgICAgICAgICB0aGlzLmdhaW5zW2ldW2RdID0gbmV3Z2FpbjsgLy8gc3RvcmUgZm9yIG5leHQgdHVyblxuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbW9tZW50dW0gc3RlcCBkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBtb212YWwgPSB0aGlzLml0ZXIgPCAyNTAgPyAwLjUgOiAwLjg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c2lkID0gbW9tdmFsICogc2lkIC0gdGhpcy5lcHNpbG9uICogbmV3Z2FpbiAqIGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy55c3RlcFtpXVtkXSA9IG5ld3NpZDsgLy8gcmVtZW1iZXIgdGhlIHN0ZXAgd2UgdG9va1xuICAgICAgICAgICAgICAgIC8vIHN0ZXAhXG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdICs9IG5ld3NpZDtcbiAgICAgICAgICAgICAgICB5bWVhbltkXSArPSB0aGlzLllbaV1bZF07IC8vIGFjY3VtdWxhdGUgbWVhbiBzbyB0aGF0IHdlIGNhbiBjZW50ZXIgbGF0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXByb2plY3QgWSB0byBiZSB6ZXJvIG1lYW5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSAtPSB5bWVhbltkXSAvIE47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pZih0aGlzLml0ZXIlMTAwPT09MCkgY29uc29sZS5sb2coJ2l0ZXIgJyArIHRoaXMuaXRlciArICcsIGNvc3Q6ICcgKyBjb3N0KTtcbiAgICAgICAgcmV0dXJuIGNvc3Q7IC8vIHJldHVybiBjdXJyZW50IGNvc3RcbiAgICB9XG4gICAgLy8gZm9yIGRlYnVnZ2luZzogZ3JhZGllbnQgY2hlY2tcbiAgICBkZWJ1Z0dyYWQoKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIGNvbnN0IGUgPSAxZS01O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeW9sZCA9IHRoaXMuWVtpXVtkXTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkICsgZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZzAgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCAtIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cxID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuYWx5dGljID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1lcmljYWwgPSAoY2cwLmNvc3QgLSBjZzEuY29zdCkgLyAoMiAqIGUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGkgKyAnLCcgKyBkICsgJzogZ3JhZGNoZWNrIGFuYWx5dGljOiAnICsgYW5hbHl0aWMgKyAnIHZzLiBudW1lcmljYWw6ICcgKyBudW1lcmljYWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGNvc3QgYW5kIGdyYWRpZW50LCBnaXZlbiBhbiBhcnJhbmdlbWVudFxuICAgIGNvc3RHcmFkKFkpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgZGltID0gdGhpcy5kaW07IC8vIGRpbSBvZiBvdXRwdXQgc3BhY2VcbiAgICAgICAgY29uc3QgUCA9IHRoaXMuUDtcbiAgICAgICAgY29uc3QgcG11bCA9IHRoaXMuaXRlciA8IDEwMCA/IDQgOiAxOyAvLyB0cmljayB0aGF0IGhlbHBzIHdpdGggbG9jYWwgb3B0aW1hXG4gICAgICAgIC8vIGNvbXB1dGUgY3VycmVudCBRIGRpc3RyaWJ1dGlvbiwgdW5ub3JtYWxpemVkIGZpcnN0XG4gICAgICAgIGNvbnN0IHF1QXJyID0gdGhpcy56ZXJvcyhOICogTik7XG4gICAgICAgIGxldCBxc3VtID0gMC4wO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaGVyZSA9IFlbaV1bZF0gLSBZW2pdW2RdO1xuICAgICAgICAgICAgICAgICAgICBkc3VtICs9IGRoZXJlICogZGhlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ID0gMS4wIC8gKDEuMCArIGRzdW0pOyAvLyBTdHVkZW50IHQtZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgcXVBcnJbaSAqIE4gKyBqXSA9IHF1O1xuICAgICAgICAgICAgICAgIHF1QXJyW2ogKiBOICsgaV0gPSBxdTtcbiAgICAgICAgICAgICAgICBxc3VtICs9IDIgKiBxdTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBub3JtYWxpemUgUSBkaXN0cmlidXRpb24gdG8gc3VtIHRvIDFcbiAgICAgICAgY29uc3QgTk4gPSBOICogTjtcbiAgICAgICAgY29uc3QgUSA9IHRoaXMuemVyb3MoTk4pO1xuICAgICAgICBmb3IgKGxldCBxID0gMDsgcSA8IE5OOyBxKyspIHtcbiAgICAgICAgICAgIFFbcV0gPSBNYXRoLm1heChxdUFycltxXSAvIHFzdW0sIDFlLTEwMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvc3QgPSAwLjA7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGdzdW0gPSBuZXcgQXJyYXkoZGltKTsgLy8gaW5pdCBncmFkIGZvciBwb2ludCBpXG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgZ3N1bVtkXSA9IDAuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29zdCArPSAtUFtpICogTiArIGpdICogTWF0aC5sb2coUVtpICogTiArIGpdKTsgLy8gYWNjdW11bGF0ZSBjb3N0ICh0aGUgbm9uLWNvbnN0YW50IHBvcnRpb24gYXQgbGVhc3QuLi4pXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSAqIE4gKyBqXSAtIFFbaSAqIE4gKyBqXSkgKiBxdUFycltpICogTiArIGpdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZ3N1bVtkXSArPSBwcmVtdWx0ICogKFlbaV1bZF0gLSBZW2pdW2RdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFkLnB1c2goZ3N1bSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29zdCwgZ3JhZCB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVFNORSA9IFRTTkU7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsImV4cG9ydHMiLCJ0c25lXzEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJUU05FIiwidmFsdWUiLCJjb25zdHJ1Y3RvciIsIm9wdCIsInRoaXMiLCJyZXR1cm5WIiwidlZhbHVlIiwiaXRlciIsInBlcnBsZXhpdHkiLCJnZXRvcHQiLCJkaW0iLCJlcHNpbG9uIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsImZpZWxkIiwiZGVmYXVsdHZhbCIsImhhc093blByb3BlcnR5IiwiZ2F1c3NSYW5kb20iLCJ1IiwiTWF0aCIsInJhbmRvbSIsInYiLCJyIiwiYyIsInNxcnQiLCJsb2ciLCJyYW5kbiIsIm11Iiwic3RkIiwiemVyb3MiLCJuIiwiaXNOYU4iLCJBcnJheUJ1ZmZlciIsImFyciIsIkFycmF5IiwiaSIsIkZsb2F0NjRBcnJheSIsInJhbmRuMmQiLCJkIiwicyIsInVzZXMiLCJ4IiwieGhlcmUiLCJqIiwicHVzaCIsIkwyIiwieDEiLCJ4MiIsIkQiLCJsZW5ndGgiLCJ4MWkiLCJ4MmkiLCJ4dG9kIiwiWCIsIk4iLCJkaXN0IiwiZDJwIiwidG9sIiwibmYiLCJmbG9vciIsImhUYXJnZXQiLCJQIiwicHJvdyIsImJldGFtaW4iLCJiZXRhbWF4IiwiSW5maW5pdHkiLCJiZXRhIiwiZG9uZSIsIm1heHRyaWVzIiwibnVtIiwicHN1bSIsInBqIiwiZXhwIiwibkhlcmUiLCJhYnMiLCJwT3V0IiwiTjIiLCJtYXgiLCJzaWduIiwiaW5pdERhdGFSYXciLCJkaXN0cyIsImluaXRTb2x1dGlvbiIsImluaXREYXRhRGlzdCIsIlkiLCJnYWlucyIsInlzdGVwIiwiZ2V0U29sdXRpb24iLCJzdGVwIiwiY2ciLCJjb3N0R3JhZCIsImNvc3QiLCJncmFkIiwieW1lYW4iLCJnaWQiLCJzaWQiLCJnYWluaWQiLCJuZXdnYWluIiwibmV3c2lkIiwiZGVidWdHcmFkIiwiZSIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsImNvbnNvbGUiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJxIiwiZ3N1bSIsInByZW11bHQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsInRoZW4iLCJhcHBseSIsIm9ubWVzc2FnZSIsImV2dCIsInRzbmUiLCJkYXRhIiwib3B0aW9ucyIsImxlYXJuaW5nUmF0ZSIsImNvbXBvbmVudHMiLCJpdGVyQ291bnQiLCJpdGVyYXRpb25zIiwicG9zdE1lc3NhZ2UiXSwic291cmNlUm9vdCI6IiJ9
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxRixTQUFTaUMsRUFBU3BJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFpQixNQUFFOUgsR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUM3RixTQUFTWixFQUFLOEMsR0FKbEIsSUFBZXJJLEVBSWFxSSxFQUFPbEUsS0FBTzZELEVBQVFLLEVBQU9ySSxRQUoxQ0EsRUFJeURxSSxFQUFPckksTUFKaERBLGFBQWlCNkQsRUFBSTdELEVBQVEsSUFBSTZELEdBQUUsU0FBVW1FLEdBQVdBLEVBQVFoSSxFQUFRLEtBSWpCc0ksS0FBS0osRUFBV0UsRUFBVyxDQUM3RzdDLEdBQU11QyxFQUFZQSxFQUFVUyxNQUFNWCxFQUFTQyxHQUFjLEtBQUtNLE9BQ2xFLEdBQ0osRUFFQUssVUFBWSxTQUFVQyxHQUNsQixPQUFPakosRUFBVVcsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXVJLEVBQU8sSUFBSSxJQUFLLENBQ2xCaEksUUFBUytILEVBQUlFLEtBQUtDLFFBQVFDLGFBQzFCdEksV0FBWWtJLEVBQUlFLEtBQUtDLFFBQVFySSxXQUM3QkUsSUFBS2dJLEVBQUlFLEtBQUtDLFFBQVFFLGFBRTFCSixFQUFLM0QsWUFBWTBELEVBQUlFLEtBQUtBLE1BQzFCLE1BQU1JLEVBQVlOLEVBQUlFLEtBQUtDLFFBQVFJLFdBQ25DLElBQUssSUFBSTdHLEVBQUksRUFBR0EsRUFBSTRHLElBQWE1RyxFQUM3QnVHLEVBQUtuRCxPQUNUMEQsWUFBWSxDQUFFLFdBQWNQLEVBQUtwRCxlQUNyQyxHQUNKLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9zcmMvd29ya2Vycy90c25lLXdvcmtlci50cyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtlciBmb3IgdGhlIG1ldGhvZCB0LVNORVxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHNuZSA9IG5ldyBUU05FKHtcbiAgICAgICAgICAgIGVwc2lsb246IGV2dC5kYXRhLm9wdGlvbnMubGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgcGVycGxleGl0eTogZXZ0LmRhdGEub3B0aW9ucy5wZXJwbGV4aXR5LFxuICAgICAgICAgICAgZGltOiBldnQuZGF0YS5vcHRpb25zLmNvbXBvbmVudHMsXG4gICAgICAgIH0pO1xuICAgICAgICB0c25lLmluaXREYXRhUmF3KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBjb25zdCBpdGVyQ291bnQgPSBldnQuZGF0YS5vcHRpb25zLml0ZXJhdGlvbnM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlckNvdW50OyArK2kpXG4gICAgICAgICAgICB0c25lLnN0ZXAoKTtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyAnZW1iZWRkaW5ncyc6IHRzbmUuZ2V0U29sdXRpb24oKSB9KTtcbiAgICB9KTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJleHBvcnRzIiwidHNuZV8xIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiVFNORSIsInZhbHVlIiwiY29uc3RydWN0b3IiLCJvcHQiLCJ0aGlzIiwicmV0dXJuViIsInZWYWx1ZSIsIml0ZXIiLCJwZXJwbGV4aXR5IiwiZ2V0b3B0IiwiZGltIiwiZXBzaWxvbiIsImFzc2VydCIsImNvbmRpdGlvbiIsIm1lc3NhZ2UiLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJoYXNPd25Qcm9wZXJ0eSIsImdhdXNzUmFuZG9tIiwidSIsIk1hdGgiLCJyYW5kb20iLCJ2IiwiciIsImMiLCJzcXJ0IiwibG9nIiwicmFuZG4iLCJtdSIsInN0ZCIsInplcm9zIiwibiIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJBcnJheSIsImkiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwiZCIsInMiLCJ1c2VzIiwieCIsInhoZXJlIiwiaiIsInB1c2giLCJMMiIsIngxIiwieDIiLCJEIiwibGVuZ3RoIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZGlzdCIsImQycCIsInRvbCIsIm5mIiwiZmxvb3IiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsIm51bSIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwibWF4Iiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJpbml0RGF0YURpc3QiLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImdldFNvbHV0aW9uIiwic3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsImUiLCJ5b2xkIiwiY2cwIiwiY2cxIiwiYW5hbHl0aWMiLCJudW1lcmljYWwiLCJjb25zb2xlIiwicG11bCIsInF1QXJyIiwicXN1bSIsImRzdW0iLCJkaGVyZSIsInF1IiwiTk4iLCJRIiwicSIsImdzdW0iLCJwcmVtdWx0IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJvbm1lc3NhZ2UiLCJldnQiLCJ0c25lIiwiZGF0YSIsIm9wdGlvbnMiLCJsZWFybmluZ1JhdGUiLCJjb21wb25lbnRzIiwiaXRlckNvdW50IiwiaXRlcmF0aW9ucyIsInBvc3RNZXNzYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==
|